Agent Typeの構築
Agent Typeのイベントを作成するには、Atoms UIを開き、必ず「AgentType Events」タブを選択してください。「Add」をクリックすると、GUIまたはScriptモードでクリップを編集するかどうかを尋ねるダイアログが表示されます。
GUI モード
Agent Typeに名前を付けます(testRobot)。
以前に、エクスポートしたSkeleton FileとGeo Fileを選択します。 "Skeleton File"は、ユーザーのSkeleton Definition fileを指し、 "Geo Path"は、ユーザーのProxy Geo fileを指します。 "Skin Path"は、ユーザーのスキン化されたGeo fileを指します。
State Machineを "robotStateMachine"(前のセクションで作成したもの)に設定するか、フィールドの右側にあるドロップダウンメニューから選択します。
必要に応じて、Agent Typeのスケール乗数を編集できますが、こちらのチュートリアルでは必要ありません。
ユーザーのGUIは、図のように確認することができると思われます。
「Register」ボタンをクリックするか、Ctrl + Sを押します。
ユーザーのAgent Typeは使用可能になりました。
Agent Typeのスケール乗数は、このようなタイプのすべてのエージェントに影響します。特定のエージェントのスケールを変更したい場合は、Agent Scale Behaviourモジュールを使用してください。
Script モード
Script モードを選択した場合は、次のようにスクリプトを編集する必要があります。
また、Ctrl + Sを押すか、「Register」ボタンをクリックしてください。
import os import AtomsMath import AtomsCore import Atoms from Atoms import GLOBAL_NAMES class AgentTypeEvent2(Atoms.SimulationEvent): eventName = 'testRobot' skelFile = 'D:/projects/atomsDemo/configs/atomsRobot.atomsskel' geoPath = 'D:/projects/atomsDemo/configs/atomsRobot.geos' skinPath = 'D:/projects/atomsDemo/configs/atomsRobot_skin.geos' stateMachine = 'robotStateMachine' scaleMultiplier = 1.0 def __init__(self): Atoms.SimulationEvent.__init__(self) self.setName(self.eventName) def load(self): AGENT_TYPE = GLOBAL_NAMES.AGENT_TYPE skel = AtomsCore.Skeleton(1) skeletonArchive = AtomsCore.Archive() if skeletonArchive.readFromFile(self.skelFile): skel.deserialise(skeletonArchive) else: return aType = Atoms.AgentType() aType.setSkeleton(skel) meshMap = AtomsCore.MapMetadata() typeArchive = AtomsCore.Archive() if typeArchive.readFromFile(self.geoPath): meshMap.deserialise(typeArchive) aType.metadata()[AGENT_TYPE.LOW_GEO] = meshMap skinMap = AtomsCore.MapMetadata() skinArchive = AtomsCore.Archive() if skinArchive.readFromFile(self.skinPath): skinMap.deserialise(skinArchive) aType.metadata()[AGENT_TYPE.SKIN_GEO] = skinMap aType.metadata()[AGENT_TYPE.STATE_MACHINE] = AtomsCore.StringMetadata(self.stateMachine) aType.metadata()[AGENT_TYPE.SCALE_MULTIPLIER] = AtomsCore.DoubleMetadata(self.scaleMultiplier) Atoms.AgentTypes.instance().addAgentType(self.eventName, aType) def unload(self): Atoms.AgentTypes.instance().removeAgentType(self.eventName)
Copyright © 2017, Toolchefs LTD.