Support Topics
支援主题 / UC-win/Road 售后支援服务相关信息
City Design工具 Vol.4 (全7次) ImageToCity

 我是亚利桑那州立大的小林。这里就FORUM8公开的City Design工具进行介绍。

 FORUM8的VR软件UC-win/Road与其他3D·CG软件间可无缝实现城市数据生成·转换,我们以此为目的开发了该工具包。这里介绍的工具虽然已经公开代码,由于目前没有进行特定的支援,即使存在BUG等问题我放特此申明不承担任何责任。敬请事先知晓。
 此外,浏览本期报道的建筑·土木相关的人士如果有希望能提供适用于贵公司系统的简易工具的需求,敬请联系。

 Procedural 城市生成
上次对PovrayToMax、ImageToTerrain、AnimatedCharacter几款工具做了介绍。作为第4次,本次对ImageToCity这款三维城市数据的自动生成工具进行介绍。与以前介绍的工具一样,作为Autodesk公司的3dsMax插件而开发。成为CityDesign基础的本工具是亚利桑那州立大学在2009年度研究开发的。通过准备以下4个文件,500米四方的建筑物、道路、树木等作为全部具备材质的3D数据被生成,导入到VR城市可视化工具FORUM8公司的UC-win/Road。

  1. 展示道路线的AI格式文件。
  2. 城市规划边界线的封闭样条曲线群的AI文件。
  3. 地形的隆起作为灰色像素记录的图像文件
  4. 森林地区、住居地域、商业地域按颜色划分的图像文件

首先,对Procedural城市生成相关的简单背景进行介绍。
城市的自动生成研究本身并非新概念。最开始必须要介绍的是Shape Grammar。
这是空间要素之间关系的记述方法,1970年代由George Stiny教授(现MIT教授)开发。
Stiny教授作为80-90年代UCLA(加利福尼亚大学洛杉矶校)的建筑学科教授,Shape Grammar相关提出了许多论文和研究成果。有兴趣的朋友可以阅读下面的书籍。
第一本是已故William Michael教授所著,总结了建筑领域中利用ShapeGrammar的理论和方法。
第二本是对Shape Grammar通过数学说明的英文书。
  • 「建筑的形态语言-关于设计、计算、认知」ウィリアム ミッチェル、長倉 威彦著
  • 「Shape:Talking about Seeing and Doing」 George Stiny著
我本人也是90年代在UCLA,参加过Stiny教授及他的夫人Terry Knight教授(现在也是MIT的教授)的Color Grammar的授课的一名学生之一。
不过,Shape Grammar主要是作为建筑领域的分析工具被利用,一般性利用尚不多见。
改变这个状况的是2001年,Computer Graphics领域最大的Siggraph学会被发表的Procedural Modeling of Cities论文。
根据ETH(瑞士工科大学)的Yoav Parish氏和Pascal Muller氏所发表的论文(*),Shape Grammar的记述,通过脚本(CGA)好莱坞中也可利用的高品质三维城市数据可自动生成。

技术方面,较少描述即可生成复杂的数据,从应用面带给人们惊叹和印象。
之后,Pascal Muller氏开发了许多自动生成工具,现在设立了一家叫做Procedural Inc的公司,销售一款名为CityEngine的软件。
该工具在最近公开的片名叫「Cars2」的好莱坞电影中用于城市生成。他的共同研究者研究利用CGA自动生成建筑物的Peter Wonka氏(现亚利桑那州立大教授)是现在我的共同研究者。
(*)Yoav I. H. Parish, Pascal Muller , "Procedural modeling of cities", Proceedings of SIGGRAPH '01
Siggraph的学会论文集中搜索Procedural Modeling,可找到一系列的研究成果。

那么有了这些工具任何人都可以简单完成好莱坞电影中那样的城市数据制作吗?回答是No。「使用生成工具自动制作城市」和「自动抽出建筑物的生成工具」是完全不同的概念。Pascal氏所开发的工具确实是用于前者设计的工具,后者尚属于研究课题领域。

此外,城市、建筑物数据制作相关,与几何数据相同,在材质数据制作方面也发挥了非常重要的作用。
材质设置需要丰富的CG艺术经验,比起几何数据作成需要更多的时间和精力。
Pascal氏自身由于具备这些技术,通过开发的工具可以将作成的数据更好地展示。
生成规则记述也不是普通的作业。亚利桑那州立大学也雇佣了几名博士课程的学生将数据作成作为课题,为此同僚的Peter氏的评价是「根本派不上用场。」。以此为背景,与现有工具不同目的,开发了本工具(ImageToCity)。首先,本工具自身用于脚本的学习教材编写进行了开发。
虽然可以全自动生成城市数据,需要进行自定义时,必须对源代码进行修改。
该工具本身作为教材,希望能对「建筑物的生成规则抽出」进行学习。
此外,为了简单即可设置材料等,开发成为3dsMax的插件。
如果3dsMax可以使用,其知识可以用于材质设置时。最终目标是将建筑物的自动生成作业进行划分。
几何数据作成者、材料作成者、建筑物规则开发者,如果能将整个工作分成3个小组分开作业,数据作成的効率化就可以量化。由于图纸的关系,这次只介绍自动生成的方法,如果需要详细信息和教材请与我们联络。
我们专门预备了分10次授课共200多页的教材。

■图1 AnimatedCharacter工具的GUI

 ImageToCity自动生成的管道
 以下列车时刻表是将ImageToCity的管道图式化的结果。

从4个输入文件首先对道路网包围的用地细分化,从各区划特定建筑物的平面图,通过预先容易的建筑物生成工具(高度、窗户分配等在决定的范围内随机分布的工具)生成建筑物的几何数据(5)。
此时,生成的网格对象的各个面(构成网格的最小多边形)中材料ID(1号:草地、2号:沥青、3号:壁1、4号:框格等)也自动分配。
接下来从事先准备好的24个建筑物用材料中任意选择1个分配到各建筑物(6)。
1个建筑物材质来自10个材质ID群。根据这个构成,建筑物数据完成前,其他人可进行材质作成。然后为了让1个建筑物区划内的数据对应1个网格数据,对树木、人行道、草坪等粘贴统合(7)。
最后是利用3dsMax的材质烧制功能(TextureBaked),对各建筑物用地将1个3DS文件和相关材质图像保存到特定的文件夹。生成的建筑物比如有10个的时候,相应生成10个3DS和10个图像文件。
与此同时,10个数据的位置信息被记录生成1个原始数据(8,9)。
UCwin/Road在导入时,通过指定该原始数据所有建筑物数据便可自动导入。

   
■图3 文件输出的GUI
■图2 文件导入的GUI ■图4 3dsMax下生成的建筑物数据

 解决方案
 接下来,根据工具的使用方法按步骤顺序说明。

  1. 首先准备4个文件。

  2. 打开3dsMax,从菜单选择"MAXScript RunScript",指定"GUI.ms"file。
    与通常的MaxScript实行相同,从Utility标签的Utilities下拉菜单列表中选择"DesignCity",追加工具。

  3. 通过Figure2的GUI步骤1准备的文件逐一指定。
    ("GetRoadFile","GetSiteFile","GetZoningFile","GetDEMFile"按钮)

  4. 通过下面Figure3的GUI,按照从1到4的顺序选择。
    ("1:RegisterComponent","2:GenerateBuildings","3:BakeTexture","4:OutputFile"按钮)

  5. 根据数据而有所不同,剩下便是等待数据生成。
    制作如Figure4所示的数据。(不生成道路和地形数据。)

(*)各建筑物区划数据的材质大约需要5分钟左右。
10个建筑物的话,预计大约需要50分种。为了提高改善,目前正在研究中。
此外,生成的数据在UC-win/Road中利用时,需要对道路和用地进行再次生成。

 结束语
此次仅从AI(Line数据)文件和图像文件(BMP)对自动生成三维城市数据的工具ImageToCity进行了介绍。
生成的数据在UC-win/Road中通过文件夹指定可直接导入。
下次将对从图像文件群生成建筑物的工具ImageToFacade进行介绍。



支援主题 / UC-win/Road 维护支持服务相关信息
UC-win/Road SDK自动方向控制

伴随UC-win/Road V5.2的发布,对驾驶模拟插件进行了修改。
UC-win/Road驾驶模拟器中运用主动力方向选项,主动力方向轴变得可以从外部进行控制。这里说的控制是方向盘控制部开放循环的输入扭矩。
作为现在从UC-win/Road向外部程序提供的主要接口,是控制方向盘角度(位置)的功能,于此同时在车辆的自动控制研究中准备有输入输出必要信息的接口。
车辆的自动控制、事故防止系统和驾驶员的互动研究,可用于各类道路和交通状况的实验。

■ UC-win/Road驾驶模拟器的方向

该功能主要由3个要素构成。
  1. UC-win/Road SDK的连接功能,SDK的连接功能的Sample插件
  2. 通过UPD网络接口的连接功能
  3. 驾驶模拟插件的设置

 关于方向盘的控制
 运用电机赋予方向盘扭矩的同时对移动量进行控制。
UC-win/Road方面按照50Hz的频率直接将扭矩命令发送到硬件,取得方向盘现在的角度。
通过50Hz的反复处理,根据取得的方向盘角度及其变化计算下一次应该赋予的扭矩值。
因为方向盘的旋转轴和方向盘的重心分离,方向盘倾斜时由于重力会发生扭矩。
考虑该扭矩进行控制。

另外,通过考虑方向盘的摩擦力设置,可以更加正确地进行控制。


 SDK的API
SDK的API中运用「IF8DSPlugin」,可通过下面的函数进行控制。

SetDirectTorqueControl
用于方向盘控制有効或无効的函数。
无効的情况下不可能控制,按照通常状态运行。
有効的情况下运用SetHardwareSteeringWheelAngle函数控制方向盘的角度。

SetHardwareSteeringWheelAngle

用于方向盘角度控制的功能。
此处,指定目标角度寄旋转所使用的最大扭矩。
控制方向盘时,可以设置的最大扭矩为8Nm,非常强力的动作经常使用1.5到2Nm的扭矩。
角度单位在-360到+360的范围内。如方向盘所控制一样准备了几个功能。
此外,不仅是方向盘的控制,也可置换驾驶模拟所使用的输入值。

GetBrakeHardwareValue  GetThrottleHardwareValue  GetWheelAngleHardwareValue
通过这3个函数对现在硬件的刹车踏板、油门踏板及方向盘的操作量。该函数可以随时调用,值位于50Hz频率时被实际更新。

OverrideAppliedBrake  OverrideAppliedSteering  OverrideAppliedThrottle
UC-win/Road内部为了计算VR空间里车辆的行为,覆盖被使用的操作量的函数。该函数一次调用后,这以后的硬件操作被忽视,调用下述「StopApplied***Override」函数接触覆盖处理。

StopAppliedBrakeOverride  StopAppliedSteeringOverride  StopAppliedThrottleOverride
通过该函数中止在Override-Applied***开始的输入值的处理。

GetAppliedBrakeValue  GetAppliedSteeringValue  GetAppliedThrottleValue
运用该函数通过在UC-win/Road内部处理取得实际使用的操作量的值。
覆盖输入值时,取得所覆盖的值。解除覆盖的情况时,利用从硬件取得的值。

 Sample插件
 SDK中提供了驾驶模拟器方向盘控制的Sample插件。该Sample用于乘坐在助手席时使用。
UC-win/Road进行自动驾驶,计算方向盘转角,基于1.5Nm的扭矩应用在方向盘。
UC-win/Road中切换为自动驾驶时进行以下操作。

  1. 乗车
  2. 断开模拟器的点火键
  3. UC-win/Road的键盘中按下Enter键移动到助手席

令方向盘控制有効,从「Tools」菜单选择「Start Steering Wheel Control Dem…」。
停止控制时,从「Tools」菜单选择「Stop Steering Wheel Control Demo」。


 方向盘控制的参数
DS插件的选项画面中,为了提高扭矩控制的正确性,可设置方向盘的物理参数。
参数在UC-win/Road的驾驶模拟器选项画面的「UCwin/Road→Drive Simulator」标签中可以访问。
以下参数可变更。默认值根据FORUM8东京本社的UC-win/Road驾驶模拟器为基准。

Delay
从新扭矩命令送信到方向盘反应,秒单位的延迟时间。0.1~0.3s为期待值。

Inertia movement
车轮的惯性力矩。来自适用扭矩的角加速度计算中被使用。
过大值的情况,车轮将大幅度偏离会超过旋转、角度命令,在收敛到正确角度之前在其前后实施强制值。

Shift moment
车轮不在平衡(0.0度)位置时,车轮的重力可考虑为引起力矩的起因。
车轮的重心因为不在车轮的旋转轴上,当重心不与旋转轴垂直时将产生力矩。
为了确认该值,选项画面的「Angle control test」相对不同角度通过应用小扭矩,可确认移动过程中车轮的角度对加速度带来的影响。
不论怎样的车轮角度得到一定的加速度时,「Shiftmovement」会变成正确值。

Resistive movement
为了维持车轮的一定角速度设置必要的最小扭矩值。该值用于车轮的摩擦计测。


 通过网络UDP插口控制
通过此通信功能可借助其他应用程序对驾驶模拟操作进行监视、控制。
应用程序在安装了UC-win/Road的PC上或相同网络的其他PC上,由于要与UC-win/Road进行信息送受信,必须实装有UDP服务器、客户端的系统。
最终列车时刻表如下图所示。


驾驶模拟插件中对于以下功能经由UDP协议经由与SDK的API一样可远程访问硬件。

  1. 动作的目的通过指定角度、扭矩控制方向盘
  2. 实际的方向盘角、踏板输入值可从硬件取得
  3. 取得车辆力学所适用的方向盘、节流阀、刹车值
  4. 为了其他的值也适用于车辆力学覆盖来自硬件的值

远程访问的参数在选项画面的[UC-win/Road→Drive Simulator]标签中可指定。
  • UC-win/Road的UDP服务器处于动作中,从任意的IP地址在驾驶模拟插件的选项画面设置UDP端口对于上述1,4的功能等待命令。
  • UDP客户是驾驶模拟中选项画面设置的IP地址,UDP端口中相对上述2,3功能的值一边连续送信一边动作。
  • 通过选项画面可令客户端、服务器双方有効或无効。
  • UC-win/Road起动时,可设置自动有効的选项「Activatecommunication by default」。

关于协议
所有的命令均通过ANSI字符串送信。
UC-win/Road的UDP服务器接收以下的命令信息。

SetDirectTorque
Control=-1
转矩控制有効
SetDirectTorque
Control=0
转矩控制无効
SetHardwareSteeringWheelAngle
=ANGLE,TORQUE
车轮的角度命令送信ANGLE和TORQUE是通过字符串进行表现的浮动小数点数值。
ANGLE是度单位的定义
TORQUE是Nm单位的定义
例:SetHardwareSteeringWheelAngle=180,1.5
OverrideAppliedSteering
=STEERING
覆盖UC-win/Road的车辆力学所适用的方向盘值
STEERING是无次元介于-1~1的值
例:OverrideAppliedSteering=0.5
StopAppliedSteeringOverride 停止方向盘值的覆盖,回到通常的运行。
OverrideAppliedThrottle
=THROTTLE
覆盖UC-win/Road的车辆力学所适用的油门值。
THROTTLE是无次元介于0~1的值
例.:OverrideAppliedThrottle=0.5
StopAppliedThrottleOverride 停止油门值的覆盖,回到通常的运行。
OverrideAppliedBrake
=BRAKE
覆盖UC-win/Road的车辆力学所适用的刹车值
BRAKE是无次元介于0~1的值
例:OverrideAppliedBrake=0.5
StopAppliedBrake
Override
停止刹车值的覆盖,回到通常的运行。

此外,UC-win/Road的UDP客户是向指定的IP地址、端口进行以下数据的送信。

WheelAngleHardwareValue
=ANGLE
方向盘的实际角度值
ANGLE是度单位介于-360~360的值
例:WheelAngleHardwareValue=-100
AppliedSteeringValue
=STEERING
车辆力学中适用的方向盘值
STEERING是无次元介于-1~1的值
例:AppliedSteeringValue=-1
ThrottleHardwareValue
=THROTTLE
实际油门踏板的输入值
THROTTLE是无次元介于0~1的值
例:ThrottleHardwareValue=1
AppliedThrottleValue
=THROTTLE
车辆力学中适用的油门值
THROTTLE是无次元介于0~1的值
例:AppliedThrottleValue=0
BrakeHardwareValue
=BRAKE
实际的刹车踏板输入值
BRAKE是无次元介于0~1的值
例:BrakeHardwareValue=1
AppliedBrakeValue
=BRAKE
车辆力学中适用的刹车值
BRAKE是无次元介于0~1的值
例:AppliedBrakeValue=0

(Up&Coming '11 秋季发行出版)
返回
Up&Coming

FORUM8