模型(model)
模型是一个场景中的子元素。模型本身不能存在,要存在于一个文件中("*.ttm"文件类型),模型本身也不能仿真。模型必须被包含在一个场景中,以便于操作。
模型是由建立在同一层次树上的场景对象的选择来定义的,其中树的基必须是标记为对象是模型基的对象。可以通过[Menu bar --> File --> Load model …]来加载。使用model browser和scene view之间的拖放操作是更简单的一种方法。可以通过[Menu bar --> File --> Save model as…]来保存模型,只需要确保选中一个标记为object is model base的对象,否则Save model as…选项将不能被选中。参照下面的建立一个清晰的模拟模型的教程。
模型可以按照下面的步骤定义:
- 将逻辑上属于模型的所有对象附加到基对象,这样基对象就是模型树的基础。
- 在对象公共属性(object commen propertities)中检查object is model base选项。
- 在和上面一样的对话框中,检查object/model can transfer or accept DNA选项。如果在稍后的阶段修改模型,这将简化模型的重新实例化。
- 在同一对话框中,点击Edit model properties,可以定义特殊的覆盖属性(例如,使整个模型不可见,不可碰撞,等等)。并可以快速地使模型中定义的所有物体的特性失效。
- 对于除了基对象的模型中的所有对象,点击对象公共属性(object commen propertities)中的select base of model instead选项。这将会保护你的模型:将不能在模型中直接选择单个对象,这样整个模型就成了单个对象。
- 对于所有常规下不能看到的物体,点击Don’t show as inside model selection选项。这样就可以使模型的边框以正确的大小出现在模型周围。
- 思考一下模型的用途:你能把它连接到其他物体上吗?(比如,你的模型是一个抓手,可以附加到一个操纵手腕上)。或者你是否可以把其他物体连接到你的模型上?(比如,你的模型是一个操作器,它可以接收一个夹爪模型)。一旦模型的用途确定,就可以定义模型的组装行为。可以参考动力学设计参考因素。
现在,建立在模型基础上的单个对象在场景中不能再被选择(会作为一个整体),但仍然可以通过在选择期间按住ctrl和shift键单独选择,或者通过在场景层次结构(scene hierarchy)中选择它们。当基对象被选择的时候,会出现下图情况,即绘有点画的包围整个模型的边框:
标记为model base的对象图标左侧的model标签:
双击model标签就可以打开model对话框来调整模型特性。当模型被编辑后,为了方便识别逻辑分组的元素/模型的数量,折叠模型的层次结构也是一个很好的方法:
当子脚本以编程方式访问对象时,将多个对象分组为模型也很重要;在CoppeliaSim中,对象/模型可以在任意时刻复制,即使是在仿真时。为了使复制的子脚本能够访问正确的对象(不是原始对象,而是复制的对象),子脚本应该总是于它访问的对象同时复制。保证这一点的一种方法是创建一个模型(如上所述),并确保访问模型中的对象的子脚本与模型中包含的对象相关联。最好是将一个子脚本(也可能有第二个子脚本)与模型的基础相关联。有关更多信息,请参阅以编程方式访问对象一节。
为了使模型易于组合(即建立在彼此之上)而无需任何额外修改,考虑模型的作用是很重要的:它是动态仿真吗?它会连接到其他模型吗,或者别的模型会连接到他吗?这些问题的答案会使你选择最好的对象类型作为模型的基。更多信息参考设计动态仿真章节。
复制和粘贴模型的行为就像保存模型,然后加载它(但是使用内存缓冲区,而不是磁盘空间)。模型可以像其他物体一样从一个场景复制到另一个场景。模型文件("*.ttm"-files)同样支持资源管理器窗口和应用程序窗口之间的拖放操作。模型文件同样可以双击,在这种情况下,它们将启动CoppeliaSim应用程序,并加载到默认场景中。
模型的属性可以在模型对话框中单独调整。