Resultados 1 al 2 de 2

Tema: Desplazar sobre superficie

  1. #1
    Fecha de ingreso
    Dec 2008
    Mensajes
    293

    Desplazar sobre superficie

    Buenas a todos, tengo la siguiente duda. Intento hacer que un dummie se desplace sobre la superficie de una esfera, parecido a lo que hace el surface constrains, pero que en vez de controlar su posición UV con los spinner del controlador, se mueva con la herramienta de transformación mover.

    Espero haberme explicado bien.

    Alguien me puede arrojar un halo de luz en el tema que me indique el camino a investar para poder resorverlo? Gracias.
    /* Jmpinero3D Blog´s */ | "Hasta el mas sabio se puede sentar encima de un hormiguero, pero solo el necio se queda sentado"

  2. #2
    Fecha de ingreso
    Apr 2002
    Mensajes
    14,651

    Desplazar sobre superficie

    Hay fórmulas y procesos para convertir un espacio UV en un espacio XYZ (encontré esto buscando por ahí):


    Pero como después de probarlo así a lo bruto, los resultados no son lo que buscamos, se me ocurren dos maneras distintas (que funcionan):
    1.- Ray casting.

    A) no sé si conoces el concepto de Ray casting. Básicamente, tienes la esfera y un punto. Pues bien, Maxscript tiene funciones para lanzar un rayo desde la posición del punto a la de la esfera. La función ray necesita la posición inicial del objeto, y una dirección (que obtenemos restando las posiciones del punto y de la esfera):
    Código:
    oray = ray p1.position (SPH, position - P1.position)
    B) ¿Qué hacemos con esto? Usar la función intersectray: dándole como argumentos de entrada la esfera y el rayo, te devuelve la posición en que ese rayo intersecta la esfera:
    Código:
    ointersect = intersectray SPH oray
    C) y una de las propiedades de intersectray es .pos, que es la posición que buscas:
    Código:
    p2.position = ointersect, pos
    Esto puedes ponerlo dentro de un script controller en p2, que es el punto que quieres que esté siempre sobre la superficie de la esfera. No olvides poner p1 y SPH (esfera) como variables (nodo, por ejemplo), porque de lo contrario la posición no se actualizara en tiempo real.
    2.- Look At.

    Esto es mucho más sencillo: si tienes una esfera de radio x, crea un hueso de esa longitud, y hazle un Look At al punto que vas a mover por ahí. Coloca el punto que quieres que esté sobre la esfera a esa distancia x del centro, y vincúlalo al hueso, o usa un position constraint al nub que se creó (así no tienes posible problemas por la torsión del hueso derivados del upnode).

Temas similares

  1. 3dsMax Movimiento sobre superficie Blender
    Por casarelo en el foro Animación y Rigging
    Respuestas: 1
    : 07-11-2019, 14:50
  2. Cinema 4D Proyectar imágenes sobre una superficie
    Por Borja Nieto en el foro Render, Iluminación y Cámaras
    Respuestas: 1
    : 24-10-2012, 12:32
  3. Proyectar un plano sobre superficie
    Por rubbin en el foro Modelado
    Respuestas: 3
    : 25-06-2011, 14:38
  4. Diamantes sobre superficie l
    Por Diegrich en el foro Modelado
    Respuestas: 1
    : 06-07-2009, 18:24
  5. Z sobre superficie
    Por Zuria en el foro Programación y Scripts
    Respuestas: 12
    : 24-10-2008, 10:55