XSIforum.com
Foros 3D => Aprendiendo-Tutoriales => Autodesk Softimage => T.Simulación y Scripting => Mensaje iniciado por: surfaze en 05 Enero 2006, 23:40:59
-
Hola a todos. He creado el siguiente script que sirve para lo siguiente.
Supongamos que estamos modelando la mitad de un coche (ahorraros las críticas, el que he puesto de ejemplo no está terminado ;)) y al duplicarlo resulta que en la juntura aparecen las dichosas crestas o valles que arruinan el modelo. Por ejemplo:
(http://img221.imageshack.us/img221/5566/cresta014qo.jpg)
Se puede observar que en la parte central hay una cresta muy fea debido a que los vertices que componen las aristas del "parallel edge loop" central no están alineados.
Pues bien, seleccionamos la mitad original. Seleccionamos el "parallel edge loop" central:
(http://img435.imageshack.us/img435/7982/cresta028kg.jpg)
y aplicamos el script, alineando en YZ (ya que el modelo se extiende a lo largo del eje Z):
(http://img263.imageshack.us/img263/4354/cresta037kx.jpg)
Y este es el resultado:
(http://img263.imageshack.us/img263/8999/cresta044bh.jpg)
(http://img209.imageshack.us/img209/5071/cresta056wd.jpg)
Como veis no crestas, no valles... un resultado perfecto y en cuestión de segundos!!!!
Bueno y este es el script para que lo podáis utilizar:
' ==============================================================
' Script para el alineado de aristas. Por Moebius4u. 5 de Enero de 2006
' ===============================================================
' Muy útil en las aristas centrales de un modelo poligonal simétrico, previo a la realización de la simetría.
' Evita crestas o valles en el centro del modelo.
' ================================================================
SonAristas = true
For Each oSel in Application.Selection
LogMessage oSel & " is a " & oSel.Type
if oSel.Type <> "edgeSubComponent" then
SonAristas = false
end if
Next
if SonAristas = false then
logMessage "Atención: Este script sólo funciona con aristas"
else
set xsiDial = createObject("xsidial.xsidialog")
alignDirection = xsidial.combo("¿En que dirección (global) quiere alinear los vertices de cada arista?", array("xy", "xz", "yz"))
set oSelection = Application.Selection
for i = 0 to (oSelection.Count - 1) ' Para cada objeto seleccionado
' Obtenemos el nombre del objeto padre
parentObject = oSelection(i).Subcomponent.Parent3DObject.Name
LogMessage parentObject
' Obtenemos las aristas seleccionadas
set subComponent = oSelection(i).SubComponent
LogMessage subComponent
IndicesAristas = subComponent.ElementArray
for j=0 to Ubound(IndicesAristas)
set oSegment = oSelection(i).subcomponent.Parent3DObject.activePrimitive.geometry.segments(indicesAristas(j))
LogMessage "Procesando arista: " & oSegment.Index
LogMessage "Procesando vertice: " & oSegment.Points(0).Index
set p = oSelection(i).subcomponent.Parent3DObject.activePrimitive.geometry.points(oSegment.Points(0).Index)
set parentObjSpace = oSelection(i).subComponent.Parent3DObject.Kinematics.Local.Transform
set oGlobalPos = XSIMath.MapObjectPositionToWorldSpace(parentObjSpace , p.position)
xPos = oGlobalPos.x
yPos = oGlobalPos.y
zPos = oGlobalPos.z
LogMessage "Procesando vertice: " & oSegment.Points(1).Index
if alignDirection =0 then
translate parentObject & ".pnt[" &oSegment.Points(1).Index& "]" , xPos , yPos , zPos, siAbsolute,, siObj, siXY
elseif alignDirection =1 then
translate parentObject & ".pnt[" &oSegment.Points(1).Index& "]" , xPos , yPos , zPos, siAbsolute,, siObj, siXZ
elseif alignDirection =2 then
translate parentObject & ".pnt[" &oSegment.Points(1).Index& "]" , xPos , yPos , zPos, siAbsolute,, siObj, siYZ
end if
next
next
end if
Como siempre, espero comentarios y mejoras.
Saludos ;)
-
Se os ven todas las fotos? Son 5 en total. A mi no se que me pasa pero no se me ven todas.
Ya me diréis...
-
Yo veo 3. Por cierto, un script muy bueno y útil. Seguro que lo usaremos mucho
-
ahora
-
Sí. Ahora se me ven todas las fotos. Debía de haber algún problema con el servidor de Imageshack.
-
coño, si señor muy bueno, lo voy a probar. O0
-
muy bueno, tnks ;)
-
Mu guapo y util, a mi me viene de perlas. Muxas gracias O0
-
parece util, gracias