XSIforum.com

Foros 3D => Aprendiendo-Tutoriales => Autodesk Softimage => T.Simulación y Scripting => Mensaje iniciado por: surfaze en 05 Enero 2006, 23:40:59

Título: Juntas de simetría perfectas
Publicado 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  ;)
Título: Re: Juntas de simetría perfectas
Publicado por: surfaze en 05 Enero 2006, 23:53:37
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...
Título: Re: Juntas de simetría perfectas
Publicado por: Sumatra en 06 Enero 2006, 00:17:17
Yo veo 3. Por cierto, un script muy bueno y útil. Seguro que lo usaremos mucho
Título: Re: Juntas de simetría perfectas
Publicado por: Tomás en 06 Enero 2006, 00:36:25
ahora
Título: Re: Juntas de simetría perfectas
Publicado por: surfaze en 06 Enero 2006, 00:44:19
Sí. Ahora se me ven todas las fotos. Debía de haber algún problema con el servidor de Imageshack.
Título: Re: Juntas de simetría perfectas
Publicado por: eduardito en 06 Enero 2006, 09:31:18
coño, si señor muy bueno, lo voy a probar.  O0
Título: Re: Juntas de simetría perfectas
Publicado por: Rashek en 06 Enero 2006, 13:16:57
muy bueno, tnks ;)
Título: Re: Juntas de simetría perfectas
Publicado por: dracon en 07 Enero 2006, 09:02:21
Mu guapo y util, a mi me viene de perlas. Muxas gracias   O0
Título: Re: Juntas de simetría perfectas
Publicado por: martindisenio en 21 Enero 2006, 18:34:59
parece util, gracias