![]() |
|
Bienvenido a Foros 3DPoder.. Usted esta viendo este foro como invitado, no esta registrado todavía, lo que limita su visión del foro. Si quiere unirse gratis a la mayor comunidad del diseño gráfico de habla hispana, tener acceso a publicar y responder mensajes, tener mensajes privados con otros miembros(PM), responder encuestas, publicar sus imágenes para que las vea el resto del mundo, tener acceso a los video_tutoriales, y muchas cosas más, no lo dude. Registrarse es rápido, simple y gratuito, agregate hoy a la mayor comunidad 3D de habla hispana! ! Si usted tiene algún problema con su registro, por favor , díganoslo aquí.
|
![]() ¿Te ayudo? |
|
|||||||
|
|
|
|
#1 | |
|
Miembro
|
Hola que tal, estoy trabajando en un script que estoy necesitando, en principio para linkear un objeto a un vertice de una malla.
utilizando dependsOn en un script controller en position transform Cita:
ahora el segundo paso es conseguir que este objeto este orientado a la normal de este vertice seleccionado pero no lo consigo, se puede extraer la normal del vertice con getNormal pero tengo dos problemas, -el primero es que getNormal funciona con Editable_mesh y no con Editable_Poly - y el segundo problema es que tengo conflictos con euler vs quaternios, intente convertirlos pero no tuve exito.... la idea es que este objeto que ahora esta linkeado al vertice seleccionado, pueda rotar en funcion de la orientacion de este vertice o el objeto del que depende... se les ocurre alguna idea para poder resolver esta cuestion? muchas gracias por adelantado!! saludos |
|
|
|
|
| Enlaces patrocinados |
|
|
#2 | |||
|
just another monkey
|
Cita:
Cita:
Ejemplo: getNormal $.mesh 6 --Retorna el vector normal del vértice 6 en el objeto seleccionado Cita:
Salu2
__________________
Blog::Demo Reel '07 ____________________ "Debes practicar hasta que lo dificil resulte fácil, luego practica hasta que lo fácil resulte hermoso" Stephen Covey
|
|||
|
|
|
|
|
#3 | |
|
Miembro
|
bien getNormal $.mesh funciona perfecto, ya no hay problemas entre editable poly y editable mesh...
con respecto a la orientacion, sigo sin poder solucionarlo.... ahora comprendo que getNormal devuelve el vector y no el angulo, por lo tanto no se puede tan sencillamente.... entonces lo que hay que hacer con el vector que devuelve getNormal es calcular el angulo para poder asignarlo al objeto...... aca esta el problema..... lei la explicacion varias veces, hice algunas cuantas pruebas pero sigo sin comprenderlo del todo..... hice un intento de reconstruir la matrix3 algo asi como: Cita:
gracias por todo Cesar! Última edición por Leandro Salerno fecha: 11 oct 2008 a las 22:00. |
|
|
|
|
|
|
#4 |
|
just another monkey
|
Aunque tuvieras la normal te hace falta un vector que te indique la tangente y luego mediante un producto cruz de las matrices sacar un tercer vector perpendicular a los anteriores para generar los 3 vectores necesarios en tu matriz de transformación, 3D implica 3 ejes
Leete el tutorial que te mencionaba en el mensaje anterior que te va a ayudar mucho a entender que es y como funcionan las matrices de transformación, a mi me fue muy muy útil.
__________________
Blog::Demo Reel '07 ____________________ "Debes practicar hasta que lo dificil resulte fácil, luego practica hasta que lo fácil resulte hermoso" Stephen Covey
|
|
|
|
|
|
#5 |
|
Miembro
|
como te comentaba lei el tutorial varias veces y creo comprender que son las matrices de transformacion.... pero segun me decis..... para conseguir la orientacion hay que relizar varios calculos matematicos con ciertas formulas que por ahora desconozco.....
supongo que de alguna manera lo resolvere gracias por todo saludos! |
|
|
|
|
|
#6 | |
|
Miembro
|
bueno luego de leer bastante llegue a un resultado que funciona parcialmente bien....
primero en lugar de intentar alinear a un vertice, lo hago con una cara.... por ejemplo un ScriptController en transform, para la cara 76 de la sphere02 Cita:
estoy cerca pero falta.... |
|
|
|
|
|
|
#7 |
|
just another monkey
|
Ahora si! el código tiene mucho más sentido
Yo creo que el problema es que tomas como base para calcular la matriz un worldUpVector que no viene a nada, simplemente es un vector que apunta hacia arriba pero no tiene relación con la orientación del componente en particular al que quieres "pegarle" el helper. Yo cuando hice un script parecido en lugar de usar un worldUpVector usé un vector entre el componente seleccionado y su vecino (en el fondo la tangente de la superficie), de esta forma puedes calcular los 3 vectores y siempre tendrán relación con la orientación del componente. Salu2 ![]()
__________________
Blog::Demo Reel '07 ____________________ "Debes practicar hasta que lo dificil resulte fácil, luego practica hasta que lo fácil resulte hermoso" Stephen Covey
|
|
|
|
|
|
#8 |
|
Miembro
|
pero la tangente de la superficie no seria el rightVector? y el rightVector no lo tengo que calcular con el worldUpVector?
no comprendo bien..... probe usando: Código:
worldUpVector = normalize(cross pos Norm) creo que ya se me esta escapando el tema...... saludos |
|
|
|
|
|
#9 | ||
|
just another monkey
|
Cita:
Yo a lo que me refería antes es que con esa solución cuando gires la esfera el dummy no va a quedar fijo ya que depende de un vector inventado que simplemente apunta hacia arriba del mundo, haz la prueba y gira tu esfera hacia abajo (verás como mientras la giras la esfera va cambiando la rotación en Z de tu dummy). Es lo mismo que cuando usas un constraint y tienes que establecer tu propio upNode (o upVector o como se llame en max). Yo te recomendaría que en lugar de usar un vector inventado apuntando hacia arriba del mundo uses un vector que apunte hacia el polígono/componente vecino. Cita:
__________________
Blog::Demo Reel '07 ____________________ "Debes practicar hasta que lo dificil resulte fácil, luego practica hasta que lo fácil resulte hermoso" Stephen Covey
|
||
|
|
|
|
|
#10 |
|
Miembro
|
no te preocupes, eso no es ser rudo.... no me molesta mezlcar peras con manzanas o bananas.... equivocarse y seguir equivocandose hace que se encuentre el camino y se aprenda..... asi que no pasa nada. saludos y gracias por tu tiempo!
|
|
|
|
|
|
#11 |
|
Miembro
|
bueno seguramente me siga equivocando pero ahora llegue a esto....
aparentemente lo veo funcionar muy bien... pero no se si me estoy engañando... Código:
dependsOn $Teapot01 ( Pos= polyop.getFaceCenter $Teapot01 858 Pos2= polyop.getFaceCenter $Teapot01 844 Norm = (polyop.getFaceNormal $Teapot01 858) worldUpVector = pos - pos2 rightVector = normalize(cross worldUpVector Norm) upVector = normalize(cross rightVector Norm) matrix3 rightVector upVector Norm Pos ) |
|
|
|
|
|
#12 |
|
just another monkey
|
Está muy bien!
Lo único que creo te faltaría es normalizar el vector entre los 2 componentes, procurar de hacer locales tus variables para evitar problemas de evaluación cuando tengas varios objetos con el script de forma simultanea y en lugar de usar directamente el $teapot01 usar un nodo que te permitirá no amarrarte a nombres y va a evaluar un poco más rápido. Código:
-- forma de calcular el vector normalizado entre 2 puntos -- y guardarlo en una variable local: local worldUpVector = (pos - pos2)/Length(pos - pos2) Felicidades!
__________________
Blog::Demo Reel '07 ____________________ "Debes practicar hasta que lo dificil resulte fácil, luego practica hasta que lo fácil resulte hermoso" Stephen Covey
|
|
|
|
|
|
#13 |
|
Miembro
|
Excelente!
Si estoy con la version 2009 asi que no hay problema..... Es cierto, tengo pendiente el tema de los nodos, pero tengo que leer un poco sobre ese tema, no lo tengo muy claro todavia.... lo importante ahora es que en principio el codigo funciona genial.... Por lo que estuve probando tambien, surge un pequeño problema y es que si a la geometria le sumas un modificador como el meshsmooth o un turbosmooth el orden de las caras cambia... entonces el dummy cambia de posicion.... Pero bueno por ahora esto me sirve, hasta que tenga que poner un TurboSmooth jeje.... gracias! |
|
|
|
![]() |
| Etiquetas Identificativas |
| maxscript, normal, objeto, orientar, vertice |
| Usuarios activos actualmente viendo este tema: 1 (0 miembros y 1 visitantes) | |
| Herramientas | |
|
|
Temas Similares
|
||||
| Tema | Autor | Foro | Respuestas | Último mensaje |
| Guía rápida de blender 3D, creada por Javier Belanche | 3dpoder | Blender | 13 | 01 sep 2008 16:02 |
| Manual de Blender - PARTE XIII - HERRAMIENTAS ESPECIALES DE MODELADO | 3dpoder | Blender | 0 | 12 mar 2008 18:11 |
| Manual de Blender - PARTE IV - TEXTURAS | 3dpoder | Blender | 0 | 10 mar 2008 16:39 |
| Manual de Blender - PARTE II - MODELADO | 3dpoder | Blender | 0 | 08 mar 2008 17:03 |
| Manual 3dsMax | 3dpoder | 3DStudio Max | 0 | 13 ago 2005 09:45 |
|
|