Render.ru

Помогите пожалуйста с нодой

Andots

Знаток
Рейтинг
66
#1
Добрый день. Пытаюсь написать ноду. Это тригер, есть 2 объекта, мне необходимо чтоб при сближении этих объектов параметр TRIG был равен 1, при удалении 0.. Атрибуты позиций объектов аффектятся. Сложность в том как сохранить позицию distance ( d ) до афекта чтоб потом из нее вычесть реальную дистанцию в данный момент времени и логикой уже выставить тригер 0 или 1. Заранее благодарю за ответы.
Тело НОДЫ:
"
import maya.OpenMayaMPx as OpenMayaMPx
import maya.OpenMaya as OpenMaya
class triggerNode(OpenMayaMPx.MPxNode):
kPluginNodeId = OpenMaya.MTypeId(0x00000520)
po1 = OpenMaya.MObject()
po2 = OpenMaya.MObject()
distance = OpenMaya.MObject()
trig = OpenMaya.MObject()

def __init__(self):
OpenMayaMPx.MPxNode.__init__(self)
def compute(self, plug, data):
p1 = data.inputValue(triggerNode.po1).asDouble3()
p2 = data.inputValue(triggerNode.po2).asDouble3()
d1=??????????
d = ((p1[0]-p2[0])**2+(p1[1]-p2[1])**2+(p1[2]-p2[2])**2)**.5
с=d-d1
If c<0: trig=1 else: trig=0
aOutput = data.outputValue(triggerNode.distance)
aOutput.setFloat(d)
bOutput = data.outputValue(triggerNode.trig)
bOutput.setFloat(trig)


data.setClean(plug)
def creator():
return OpenMayaMPx.asMPxPtr(triggerNode())
def initialize():
nAttr = OpenMaya.MFnNumericAttribute()

triggerNode.distance = nAttr.create("distance","dist", OpenMaya.MFnNumericData.kFloat,0.0)
nAttr.setWritable(True)
nAttr.setStorable(True)
triggerNode.addAttribute(triggerNode.distance)

triggerNode.distance = nAttr.create("trig","trig ", OpenMaya.MFnNumericData.kFloat,0.0)
nAttr.setWritable(True)
nAttr.setStorable(True)
triggerNode.addAttribute(triggerNode.trig )

triggerNode.pos1 = nAttr.create("po1","in1", OpenMaya.MFnNumericData.k3Double,0.0)
triggerNode.addAttribute(MeasureNode.pos1)
triggerNode.attributeAffects(triggerNode.po1, triggerNode.distance)
triggerNode.attributeAffects(triggerNode.po1, triggerNode.trig)


triggerNode.pos2 = nAttr.create("po2","in2", OpenMaya.MFnNumericData.k3Double,0.0)
triggerNode.addAttribute(triggerNode.po2)
triggerNode.attributeAffects(triggerNode.po2, triggerNode.distance)
triggerNode.attributeAffects(triggerNode.po2, triggerNode.trig)
 

Andots

Знаток
Рейтинг
66
#2
Неужели никто на знает? Может я в неверном направлении рыть начал? Как то по другому это сделать, а то задачка то вроде как простая кажется, а голову уже сломал.
 
Сверху