XSIforum.com

como tengo la salida del ctr_dist en un texto ?

0 Usuarios y 1 Visitante están viendo este tema.

Adam Sullastres

  • *****
  • 2713
  • Mercenario del 3D
como tengo la salida del ctr_dist en un texto ?
« en: 05 Junio 2010, 19:41:34 »
Eso,
como podría pillar el output del ctr_dist en una primitiva de texto?
mmmmm... puedo sacar el output del ctr_dist a un archivo rtf y cargarlo dinamicamente en la primitiva?

alanf

  • *****
  • 6026
  • Pipeline Developer @ Felix & Paul Studios
Re: como tengo la salida del ctr_dist en un texto ?
« Respuesta #1 en: 05 Junio 2010, 19:44:41 »
Tienes que usar un scripted operator.

Por que no miras como lo hizo Cesar en su script csRuler? ;)

Adam Sullastres

  • *****
  • 2713
  • Mercenario del 3D
Re: como tengo la salida del ctr_dist en un texto ?
« Respuesta #2 en: 05 Junio 2010, 19:54:58 »
a verl a verl!

Adam Sullastres

  • *****
  • 2713
  • Mercenario del 3D
Re: como tengo la salida del ctr_dist en un texto ?
« Respuesta #3 en: 05 Junio 2010, 19:56:19 »
jajajajaja
Es lo que queria hacer x_D

Re: como tengo la salida del ctr_dist en un texto ?
« Respuesta #4 en: 05 Junio 2010, 20:00:53 »
Existiendo ICE y el log en openGL es un poco absurdo hacerlo como en el csRuler, por ahí tengo una versión mucho más limpia, si la encuentro la subo :)

Adam Sullastres

  • *****
  • 2713
  • Mercenario del 3D
Re: como tengo la salida del ctr_dist en un texto ?
« Respuesta #5 en: 05 Junio 2010, 20:03:08 »
q majo xD

Adam Sullastres

  • *****
  • 2713
  • Mercenario del 3D
Re: como tengo la salida del ctr_dist en un texto ?
« Respuesta #6 en: 05 Junio 2010, 20:52:35 »
arrrrch! y esto por q no funsiona!
Pero si es super simple!

Código: [Seleccionar]
Medidor
sub Medidor
Dim OBJ1, OBJ2, boton
while True
PickElement "Object", "Pinsha OBJ 1", "Pinsha OBJ 1", OBJ1, boton
if boton = 0 then
exit sub
end if
PickElement "Object", "Pinsha OBJ 2", "Pinsha OBJ 2", OBJ2, boton
if boton = 0 then
exit sub
end if
LogMessage "La distansia entre "& OBJ1 & " y " & OBJ2 & " es de " & ctr_dist(OBJ1.name, OBJ2.name)
wend
end sub

Explota justo aki "... ctr_dist(OBJ1.name, OBJ2.name) ..." con un .. No coinciden los tipos 'ctr_dist' y si le meto
(variable.name., variable.name.) no hace nah d nah
arrrchhhhhhh
es puñeteria mía ya xD

alanf

  • *****
  • 6026
  • Pipeline Developer @ Felix & Paul Studios
Re: como tengo la salida del ctr_dist en un texto ?
« Respuesta #7 en: 05 Junio 2010, 21:30:22 »
Existiendo ICE y el log en openGL es un poco absurdo hacerlo como en el csRuler, por ahí tengo una versión mucho más limpia, si la encuentro la subo :)
Pero me parece que morphi quiere pasarlo a un objeto de texto en 3D, quizas para tener texto 3D animado. Con ICE no lo veo posible. Ademas, los ICE string nodes introducidos en la 2011 desafortunadamente no sirven para escribir a parametros de texto.

Adam Sullastres

  • *****
  • 2713
  • Mercenario del 3D
Re: como tengo la salida del ctr_dist en un texto ?
« Respuesta #8 en: 05 Junio 2010, 21:40:21 »
En realidad m da igual como se muestre la información, por ahora he logrado verla en el log, cosa q es un peñazo, ahora m propongo pasarlo a texto, no se como y pasarlo como entrada a un obj text para verlo en la pantallica, es mejorl xD

Adam Sullastres

  • *****
  • 2713
  • Mercenario del 3D
Re: como tengo la salida del ctr_dist en un texto ?
« Respuesta #9 en: 05 Junio 2010, 22:06:17 »
Tachaaaaaaaaaaaan

Código: [Seleccionar]
Medidor
sub Medidor
Dim oOBJ1, oOBJ2, oBoton, oPOSX, oPOSY, oPOSZ
while True
PickElement "Object", "Pinsha OBJ 1", "Pinsha OBJ 1", oOBJ1, boton
if boton = 0 then
exit sub
end if
PickElement "Object", "Pinsha OBJ 2", "Pinsha OBJ 2", oOBJ2, boton
if boton = 0 then
exit sub
end if

oPOSX = GetValue(oOBJ1 & ".kine.global.posx") - GetValue(oOBJ2 & ".kine.global.posx")
oPOSY = GetValue(oOBJ1 & ".kine.global.posy") - GetValue(oOBJ2 & ".kine.global.posy")
oPOSZ = GetValue(oOBJ1 & ".kine.global.posz") - GetValue(oOBJ2 & ".kine.global.posz")
oDistansia = sqr(oPOSX*oPOSX + oPOSY*oPOSY + oPOSZ*oPOSZ)
CreatePrim "Text", "NurbsCurve"
SetValue "text.text.text", oDistansia
wend
end sub


weeeeno ara en lugar d q sea por pik a ver si lo hago dinámico q m de la distancia toolrato entre el null y el null1
lo malo es q m da una de decimales queeeeee xD un porrón xD

Adam Sullastres

  • *****
  • 2713
  • Mercenario del 3D
Re: como tengo la salida del ctr_dist en un texto ?
« Respuesta #10 en: 05 Junio 2010, 22:24:46 »
Esto es mas facil
Código: [Seleccionar]
CreatePrim "Text", "NurbsCurve"
Create2DSkeleton -5, 0, 0, 5, 0, 0, 0, 0, 0, 4
SetValue "bone.bone.primary_icon", 7
SetValue "root.Name", "StartRuler"
SetValue "StartRuler.bone.Name", "Ruler"
SetValue "StartRuler.eff.Name", "EndtRuler"
AddExpr "Ruler.bone.length"
SetExpr "Ruler.bone.length", "ctr_dist (StartRuler., EndtRuler.)"
oDistancia = GetValue ("Ruler.bone.length")
SetValue "text.text.text", oDistancia

alanf

  • *****
  • 6026
  • Pipeline Developer @ Felix & Paul Studios
Re: como tengo la salida del ctr_dist en un texto ?
« Respuesta #11 en: 05 Junio 2010, 22:27:55 »
Explota justo aki "... ctr_dist(OBJ1.name, OBJ2.name) ..." con un .. No coinciden los tipos 'ctr_dist' y si le meto
(variable.name., variable.name.) no hace nah d nah
arrrchhhhhhh
es puñeteria mía ya xD
Es que no existe la funcion ctr_dist(). Estas confundiendo scripting con expresiones. Las expresiones son un lenguaje distinto.


Veo que ya has solucionado la cuestion, pero mientras escribias hize una version object-model con Python de lo mismo xD
Código: [Seleccionar]

xsi = Application
lm = xsi.LogMessage
from math import sqrt
from math import pow

objA = xsi.Selection(0)
posA = objA.Kinematics.Global.Transform.GetTranslationValues2()

objB = xsi.Selection(1)
posB = objB.Kinematics.Global.Transform.GetTranslationValues2()

Ax, Ay, Az = float(posA[0]), float(posA[1]), float(posA[2])
Bx, By, Bz = float(posB[0]), float(posB[1]), float(posB[2])

distBetween = sqrt(
pow( (Ax-Bx), 2 )
+ pow( (Ay-By), 2 )
+ pow( (Az-Bz), 2 )
)

lm( "Distancia entre centros: "+ str(distBetween) )

Lo pongo por no desperdiciar codigo.

Adam Sullastres

  • *****
  • 2713
  • Mercenario del 3D
Re: como tengo la salida del ctr_dist en un texto ?
« Respuesta #12 en: 05 Junio 2010, 22:36:02 »
Eres un crak xD

Adam Sullastres

  • *****
  • 2713
  • Mercenario del 3D
Re: como tengo la salida del ctr_dist en un texto ?
« Respuesta #13 en: 05 Junio 2010, 22:36:53 »
no se por q sigo con el BVs :S
costumbre mala del curro xD
A ver como lo hago dinamico ahora xD

alanf

  • *****
  • 6026
  • Pipeline Developer @ Felix & Paul Studios
Re: como tengo la salida del ctr_dist en un texto ?
« Respuesta #14 en: 05 Junio 2010, 22:51:25 »
Me olvide que puedo asignar multiples variables a la vez directamente. Version mas corta:

Código: [Seleccionar]
xsi = Application
lm = xsi.LogMessage
from math import sqrt
from math import pow

objA = xsi.Selection(0)
Ax, Ay, Az = objA.Kinematics.Global.Transform.GetTranslationValues2()

objB = xsi.Selection(1)
Bx, By, Bz = objB.Kinematics.Global.Transform.GetTranslationValues2()

distBetween = sqrt(
pow( (Ax-Bx), 2 )
+ pow( (Ay-By), 2 )
+ pow( (Az-Bz), 2 )
)

lm( "ctr_dist: "+ str(distBetween) )

Adam Sullastres

  • *****
  • 2713
  • Mercenario del 3D
Re: como tengo la salida del ctr_dist en un texto ?
« Respuesta #15 en: 06 Junio 2010, 00:00:24 »
Weno al final m he echo un par d botones :P

Para crear la regla
Código: [Seleccionar]
' Crear Regla

SICreateCurve "crvlist", 1, 1
SIAddPointOnCurveAtEnd "crvlist", -5, 0, 0, False, 0
SIAddPointOnCurveAtEnd "crvlist", 5, 0, 0, False, 0

CreateClusterCenterWithNull "crvlist.pnt[0]", 0
CreateClusterCenterWithNull "crvlist.pnt[LAST]", 0

SetValue "crvlist.Name", "Ruler"
SetValue "Ruler.crvlist_Point_ClsCtr.Name", "Start_Ruler"
SetValue "Ruler.crvlist_Point1_ClsCtr.Name", "End_Ruler"

SetValue "Start_Ruler.null.shadow_icon,End_Ruler.null.shadow_icon", Array(0, 0)
SetValue "Start_Ruler.null.primary_icon,End_Ruler.null.primary_icon", Array(4, 4)

MakeLocal "Ruler.display", siNodePropagation
SetValue "Ruler.display.wirecolorr", 0.878
SetValue "Ruler.display.wirecolorg", 0.878
SetValue "Ruler.display.wirecolorb", 0
MakeLocal "Start_Ruler.display", siNodePropagation
SetValue "Start_Ruler.display.wirecolorr", 0.125
SetValue "Start_Ruler.display.wirecolorg", 0.878
SetValue "Start_Ruler.display.wirecolorb", 0.125
MakeLocal "End_Ruler.display", siNodePropagation
SetValue "End_Ruler.display.wirecolorr", 0.125
SetValue "End_Ruler.display.wirecolorg", 0.878
SetValue "End_Ruler.display.wirecolorb", 0.125

CreatePrim "Text", "NurbsCurve"
SetValue "text.Name", "Distance_txt"
SetValue "Distance_txt.text.text", "Regla"

MakeLocal "Distance_txt.display", siNodePropagation
SetValue "Distance_txt.display.wirecolorr", 0.878
SetValue "Distance_txt.display.wirecolorg", 0.251
SetValue "Distance_txt.display.wirecolorb", 0

ApplyCns "Direction", "Start_Ruler", "End_Ruler"
ApplyCns "Direction", "End_Ruler", "Start_Ruler"
ApplyCns "Pose", "Distance_txt", "Start_Ruler"

Para medir
Código: [Seleccionar]
oPOSX = GetValue("Start_Ruler.kine.global.posx") - GetValue("End_Ruler.kine.global.posx")
oPOSY = GetValue("Start_Ruler.kine.global.posy") - GetValue("End_Ruler.kine.global.posy")
oPOSZ = GetValue("Start_Ruler.kine.global.posz") - GetValue("End_Ruler.kine.global.posz")
oDistancia = sqr(oPOSX*oPOSX + oPOSY*oPOSY + oPOSZ*oPOSZ)
SetValue "Distance_txt.text.text", oDistancia

No es lo chulo que quería pero funciona xD molaría que se actualizara solo sin tener q darle al botón q le vamos hacer hasta aquí llego xD
me ralla mucho lo de los mil decimales !
« Última modificación: 06 Junio 2010, 00:12:16 por morphi »

Adam Sullastres

  • *****
  • 2713
  • Mercenario del 3D
Re: como tengo la salida del ctr_dist en un texto ?
« Respuesta #16 en: 06 Junio 2010, 00:06:57 »
Lo encontre en la ayuda xD round(<expr>)  Es mejoooooor!!!!!
xD

alanf

  • *****
  • 6026
  • Pipeline Developer @ Felix & Paul Studios
Re: como tengo la salida del ctr_dist en un texto ?
« Respuesta #17 en: 06 Junio 2010, 02:23:58 »

Re: como tengo la salida del ctr_dist en un texto ?
« Respuesta #18 en: 13 Junio 2010, 06:19:23 »
Pero me parece que morphi quiere pasarlo a un objeto de texto en 3D, quizas para tener texto 3D animado. Con ICE no lo veo posible. Ademas, los ICE string nodes introducidos en la 2011 desafortunadamente no sirven para escribir a parametros de texto.
Me refería más bien a usar el log de ICE como representación gráfica de la distancia entre 2 nulls (en numeric), es mucho más limpio que crear curvas de texto con el scop para actualizar su valor. Para utilizar ese valor en expresiones y tal es fácil crear un custom property con la expresión de la distancia entre los 2 nulls :)

Los strings de la 2011 son una buena incorporación pero para la regla no son necesarios, con loguear la longitud de un vector ya lo tienes O0

Adam Sullastres

  • *****
  • 2713
  • Mercenario del 3D
Re: como tengo la salida del ctr_dist en un texto ?
« Respuesta #19 en: 23 Junio 2010, 15:25:37 »
Osea q o m miro el ice en serio o m paso a ser un fósil mas
pufffffff
No m bastaba con el houdini, tengo q aprender ice y C4D, m va ha estallar la cabeza leñe!

Re: como tengo la salida del ctr_dist en un texto ?
« Respuesta #20 en: 23 Junio 2010, 17:24:52 »
No creo que halla que saber al detalle como usar cada herramienta sino más bien conocer sus fortalezas y debilidades (aunque sea a nivel general) para saber por donde tirar según que tareas y conocer tus posibilidades para enfrentar los desafios que te planteas.

Te aseguro que pasar de una plataforma a otra es trivial cuando conoces la lógica tras la solución del problema, es mejor ponerse con eso que con el botoneo del software de turno :)