Variationフィルタの定義

ユーザーは、新しいVariationフィルタを定義して、自分のシーンで定義されている、Variation JSONテーブルを編集することや、ユーザー定義の基準に基づいて新しいバリエーション定義を完全に定義することができます。
Variationフィルタは、任意のシーンがレンダリングエンジンに変換される際に、呼び出されます(つまり、Arnold、Rendermanなど)。

Variationフィルタは「filter」メソッドを保有するクラスです。引数は、次のとおりです。

  • variation:現在のVariationオブジェクト。現在のバリエーションオブジェクトであり、この段階では、他のVariationフィルタによって、既に編集されている可能性があります。
  • atomsNode:ユーザーのシーンからのatomsNodeの名前です。
  • origin_data:オリジナルのVariation string Atoms.loadVariationFromString関数を使用して、この文字列からVariationオブジェクトを取得することができます。

Example 1

import Atoms
import Atoms.ui.constants
from Atoms.singletons import get_atoms_variation_filters_singleton
import random

class VariationFilter:
    def filter(self, variations, atomsNode, origin_data):
        atv = variations.getAgentTypeVariation("atomsRobot")
        if atv:
            for mat in atv.getMaterialNames():
                material = atv.getMaterial(mat)
                if material:
                    material.setDiffuseColorBlue(random.randint(0,255))
                    material.setDiffuseColorGreen(random.randint(0,255))
                    material.setDiffuseColorRed(random.randint(0,255))
        #print variations.toString(True)
        print "My variation filter"
        return variations

filters = get_atoms_variation_filters_singleton()
filters.append(VariationFilter())

Example 2

import Atoms
import Atoms.ui.constants
from Atoms.singletons import get_atoms_variation_filters_singleton


class NewVariationFilter:
    def filter(self, variations, atomsNode, origin_data):
		variations = Atoms.Variations()
		atv = Atoms.AgentTypeVariation()
		varGeo1 = Atoms.VariationGeometry()
		varGeo1.setGeometryFile("${ATOMS_DATA}/variations/geometries/atomsRobot/robot1_body.geos")
		atv.setGeometry("body",varGeo1)
		varGeo2 = Atoms.VariationGeometry()
		varGeo2.setGeometryFile("${ATOMS_DATA}/variations/geometries/atomsRobot/robot1_head.geos")
		atv.setGeometry("head",varGeo2)

		material1 = Atoms.VariationMaterial()
		material1.setMaterialFile("")
		atv.setMaterial("robot1_material",material1)
		geoGroup = Atoms.VariationGroup(atv)
		geoGroup.addCombination("body","robot1_material")
		geoGroup.addCombination("head","robot1_material")
		atv.setGroup("Robot1", geoGroup)
		atv.setLookFile("${ATOMS_DATA}/variations/materials/atomsRobot/lookFile.ass")
		variations.setAgentTypeVariation("atomsRobot", atv)
		print variations.toString(True)
		#to write the variation table a json st]irng use variations.toString(False)
		#to load a variation object from a stirng use Atoms.loadVariationFromString(json_string) or Atoms.loadVariationFromFile(json_file_path)
		return variations


def load():  
    filters = get_atoms_variation_filters_singleton()
    filters.append(NewVariationFilter())
    

Copyright © 2017, Toolchefs LTD.