Support Topics | ||||
|
||||
我是亚利桑那州立大的小林。这里就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。
首先,对Procedural城市生成相关的简单背景进行介绍。 城市的自动生成研究本身并非新概念。最开始必须要介绍的是Shape Grammar。 这是空间要素之间关系的记述方法,1970年代由George Stiny教授(现MIT教授)开发。 Stiny教授作为80-90年代UCLA(加利福尼亚大学洛杉矶校)的建筑学科教授,Shape Grammar相关提出了许多论文和研究成果。有兴趣的朋友可以阅读下面的书籍。 第一本是已故William Michael教授所著,总结了建筑领域中利用ShapeGrammar的理论和方法。 第二本是对Shape 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多页的教材。
|
ImageToCity自动生成的管道 |
解决方案 |
接下来,根据工具的使用方法按步骤顺序说明。
(*)各建筑物区划数据的材质大约需要5分钟左右。 10个建筑物的话,预计大约需要50分种。为了提高改善,目前正在研究中。 此外,生成的数据在UC-win/Road中利用时,需要对道路和用地进行再次生成。 |
结束语 |
此次仅从AI(Line数据)文件和图像文件(BMP)对自动生成三维城市数据的工具ImageToCity进行了介绍。 生成的数据在UC-win/Road中通过文件夹指定可直接导入。 下次将对从图像文件群生成建筑物的工具ImageToFacade进行介绍。 |
|
||||
伴随UC-win/Road V5.2的发布,对驾驶模拟插件进行了修改。 UC-win/Road驾驶模拟器中运用主动力方向选项,主动力方向轴变得可以从外部进行控制。这里说的控制是方向盘控制部开放循环的输入扭矩。 作为现在从UC-win/Road向外部程序提供的主要接口,是控制方向盘角度(位置)的功能,于此同时在车辆的自动控制研究中准备有输入输出必要信息的接口。 车辆的自动控制、事故防止系统和驾驶员的互动研究,可用于各类道路和交通状况的实验。
该功能主要由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中切换为自动驾驶时进行以下操作。
令方向盘控制有効,从「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一样可远程访问硬件。
远程访问的参数在选项画面的[UC-win/Road→Drive Simulator]标签中可指定。
关于协议 所有的命令均通过ANSI字符串送信。 UC-win/Road的UDP服务器接收以下的命令信息。
此外,UC-win/Road的UDP客户是向指定的IP地址、端口进行以下数据的送信。
|
(Up&Coming '11 秋季发行出版) |
|