XSIforum.com

Script para detectar la colisión (VBScript)?

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

Script para detectar la colisión (VBScript)?
« en: 03 Mayo 2011, 18:46:26 »
Estoy asiendo script para XSI en Visual Basic y parte de mi script requiere que una prueba se realiza para comprobar si dos objetos se tocan o se superponen, devolviendo un valor true o false.

¿Podría usted me ayudar aser este script ?

Para referencia estoy usando XSI 7.0 y soy frances.

Gracias de antemano,
Fabiano

Re: Script para detectar la colisión (VBScript)?
« Respuesta #1 en: 03 Mayo 2011, 21:43:33 »
Hola Fabiano,

Para una tool alguna vez tuve que hacer eso y la solución más sencilla terminó siendo usar ICE para crear una variable per point (utilizando el nodo "Point in Volume") y luego leer esa variable en el script mediante el SDK (ICEAttribute.DataArray).

¿Porque usar ICE?
entre otras cosas porque para detectar colisión se hace un uso exhaustivo de cálculos a nivel de puntos (dependiente de topología) y aprovechar el paralelismo de ICE es una solución mucho más rápida y eficiente.

Un saludo O0

Re: Script para detectar la colisión (VBScript)?
« Respuesta #2 en: 04 Mayo 2011, 01:26:10 »
Muchas gracias por tu ayuda.

Nunca he usado ICE!

Busqué ejemplos en internet pero no he encontrado nada!

¿No es eso mucho pedir te, si tu puede hacer me un pequeño ejemplo sobre un archivo .scn, por favor?

Gracias de antemano,
Fabiano

Re: Script para detectar la colisión (VBScript)?
« Respuesta #3 en: 04 Mayo 2011, 10:26:42 »
Un ejemplo tonto, estoy usando ICE para determinar si un vértice está dentro del volumen y selecciono esos vértices mediante scripting.

La parte de scripting está hecha en python pero supongo que la podrás traducir a VBScript, lo único importante es la línea 5 que es donde obtengo el atributo de ICE.

Otra cosa importante: el grid tiene un AttributeDisplay para mostrar el contenido del atributo en el viewport, asi fuerzas que se evalúe y podrás obtener un array válido mediante scripting (por diseño/optimización si un atributo de ICE no se utiliza, no se evalúa).

Un saludo O0



Uploaded with ImageShack.us

Re: Script para detectar la colisión (VBScript)?
« Respuesta #4 en: 04 Mayo 2011, 12:13:13 »
Muchas gracias por su ayuda, César.

He intentado reproducir este archivo, pero es difícil !

¿Podría por favor enviarme por correo electrónico?

fabiano1024(at)gmail.com

De antemano gracias.
Fabiano

Re: Script para detectar la colisión (VBScript)?
« Respuesta #5 en: 04 Mayo 2011, 12:24:11 »
Tengo otra pregunta.

¿Tiene que saber de antemano el nombre del objeto que estara en colisión?

El objetivo del script es encontrar el nombre del objeto que está colisionando con el objeto principal.

Una vez más gracias por tu ayuda.
Fabiano

Re: Script para detectar la colisión (VBScript)?
« Respuesta #6 en: 04 Mayo 2011, 15:20:27 »
No guardé el fichero y además la unica version de softimage que tengo en casa es la 2012 :(

Sobre los nombres, la idea es hacer todo el setup (ICE incluído) mediante scripting, de esa forma todos los nombres y tal no serán un problema.

Re: Script para detectar la colisión (VBScript)?
« Respuesta #7 en: 04 Mayo 2011, 15:26:29 »
Me estoy volviendo loco!

Estoy buscando soluciones, pero no encuentro respuesta!

Voy a explicarte en detalle el proyecto. Tal vez puede ver un método diferente que el anterior!

Tengo una base de datos de pequeñas figuras algo parecidas a las de un play-mobile. Es el mismo concepto, cada carácter se forma de la misma manera. Es decir, que cada archivo contiene un personaje que está siempre en la misma posición. Fue creado con el mismo árbol y el nombre del objetos son los mismos, lo único que es diferente son los accesorios que caracterizar el personaje.

Me gustaría cambiar el nombre de cada accesorio, ya que fueron creados en un apuro.

Creo que si tuviéramos una solucion para seleccionar un objeto basado en coordinar punto de que podría ser una solución. Asin : GetNameObjet (x, y, z)

Dime lo que piensas.

De antemano gracias.
Fabiano

Re: Script para detectar la colisión (VBScript)?
« Respuesta #8 en: 04 Mayo 2011, 21:48:13 »
Interesante y no muy difícil de implementar con lo que te comentaba arriba, yo en tu lugar crearía un pointcloud con 1 partícula en las coordenada de consulta y mediante un bucle haría el test con las geometrías del asset hasta encontrar el objeto O0

Por cierto, en lugar de consultar todas las mallas es conveniente hacer un descarte usando el bounding box (particionar el espacio), si el bounding box de la geometría está muy lejos de la coordenada de consulta probablemente no será el objeto indicado y te puedes ahorrar la consulta (esto último si tus personajes tienen muchas mallas o geometrías complejas).
« Última modificación: 04 Mayo 2011, 22:07:49 por César Sáez »

Re: Script para detectar la colisión (VBScript)?
« Respuesta #9 en: 05 Mayo 2011, 11:01:12 »
Muchas gracias César,

Yo no había pensado en la Box. Voy a tratar eso ahora. Te mantendré informado.

Muchas gracias para todo.
Fabiano