/
Standalone Simulationの作成

Standalone Simulationの作成

import os
import sys

# if is windows environment
if  os.name == "nt":
	atoms_folder = "C:/Program Files/Toolchefs/AtomsMaya/"
else: # if is linux environment
	atoms_folder = "/opt/Toolchefs/AtomsMaya/"

os.environ["ATOMS_DATA"] = atoms_folder + "data"
sys.path.insert(0, atoms_folder + "python/2017/")
sys.path.insert(0, atoms_folder + "scripts")

if  os.name == "nt":
	os.environ["PATH"] += atoms_folder + "bin/2017;"
	os.environ["PATH"] += atoms_folder + "bin;"
	os.environ["PATH"] += atoms_folder + "python/2017;"
else:
	os.environ["LD_LIBRARY_PATH"] += atoms_folder + "lib/2017:"
	os.environ["LD_LIBRARY_PATH"] += atoms_folder + "lib:"

import AtomsMath
import json
import AtomsUtils
import AtomsCore
import Atoms
import AtomsModules

from Atoms.ui.staticdata import MODES
from Atoms.constants import EVENT_TYPES, JSON_KEYS

import Atoms
from Atoms.hostbridge.atomsnode import BaseAtomsNodeHostBridge
from Atoms.utils.setup import register_all_from_stored_json_data


class StandaloneHost(BaseAtomsNodeHostBridge):
    JSON_DATA = {}
    def __init__(self):
        super(StandaloneHost, self).__init__()
        self.simulation = Atoms.AgentsSimulation()
        Atoms.AgentsSimulations.instance().addAgentsSimulation("main", self.simulation)

    @classmethod
    def load_scene(cls, data_path):
        with open(data_path) as f:
            json_data = json.load(f)
            cls.JSON_DATA = json_data

    @classmethod
    def get_json_data(cls):
        return cls.JSON_DATA

    @classmethod
    def set_json_data(cls, data):
        data_ = {}
        if not JSON_KEYS.VERSION in data:
            data_[JSON_KEYS.VERSION] = JSON_VERSION
            data_[JSON_KEYS.DATA] = data
        else:
            data_ = data

        cls.JSON_DATA =  data_

    @staticmethod
    def get_agents_simulation():
        return Atoms.AgentsSimulations.instance().agentsSimulation("main")


data_path = os.environ["ATOMS_DATA"] + "/atomsRobot.json"
host = StandaloneHost()
host.load_scene(data_path)
register_all_from_stored_json_data(host)


simulation = host.get_agents_simulation()
modulesFactory = Atoms.BehaviourModules.instance()
agGroup = simulation.createAgentGroup()
agGroup.setMultithread(True)

agGroup.addBehaviourModule("gridLayout", "gridLayout")
agGroup.addBehaviourModule("stateMachine", "stateMachine")

gridLayout = agGroup.behaviourModule("gridLayout")
gridLayout.attributes()["agentType"].set("atomsRobot")
gridLayout.attributes()["size"].set(AtomsMath.V3d(10, 0, 10))
stateMachine = agGroup.behaviourModule("stateMachine")
stateMachine.attributes()["state"].set(1)

atomsTime = Atoms.SimulationTime.instance()
atomsTime.set(0)
atomsTime.setFps(24.0)

simulation.initSimulation()

for i in range(0, 50):
    atomsTime.set(i)
    simulation.initFrame()
    simulation.computeFrame()
    simulation.endFrame()
    print "Frame", i

simulation.endSimulation()

Related content

WindowsにAtoms Houdiniプラグインをインストール
WindowsにAtoms Houdiniプラグインをインストール
More like this
LinuxにAtoms Houdiniプラグインをインストール
LinuxにAtoms Houdiniプラグインをインストール
More like this
Pythonプラグインシステム
Pythonプラグインシステム
More like this
フォルダ構造を理解する
フォルダ構造を理解する
More like this
LinuxにAtomsエージェントをインストールする
LinuxにAtomsエージェントをインストールする
More like this
WindowsにAtomsエージェントをインストールする
WindowsにAtomsエージェントをインストールする
More like this

Copyright © 2017, Toolchefs LTD.