XSIforum.com

multiresolution

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

dingdong

  • **
  • 522
  • espera, que ya llegoooo!!!!!
multiresolution
« en: 04 Julio 2003, 10:04:07 »
tengo una duda (creciente) a ver si alguien me echa una manita:

gracias a |3|D| me apaño con los reference models. De este modo tengo tres modelos externos a distintas resoluciones, en una escena he importado un modelo y los otros dos les he utilizado para Filenames for Model Resolutions dentro de las propiedades del modelo externo.

mediante Modify\Model\Set resolution establecemos la resolución del modelo (es decir el tipo de modelo fuente)

alguien sabe cómo hacer que cambie el modelo fuente según la distancia a al cámara? he pensado en crear una expresión pero no sé a qué parámetro aplicársela

muchos zankius

Dingdong

Tomás

  • O_O
  • *****
  • 4621
  • Mi no entender
Re:multiresolution
« Respuesta #1 en: 04 Julio 2003, 13:33:21 »
mm
tendre ke mirarlo, eso si me suena que lo tenia el MAX, y se que con el xsi se puede hacer lo mismo pero aplicado a los materiales, pero con objetos ahora no caigo.

lo consultare, pero debe ser con una expresion si

ZiNox

Re:multiresolution
« Respuesta #2 en: 04 Julio 2003, 15:02:47 »
Holas dingdong

Weno pues ahora mismo toy mirando a ve si se puede hacer lo que quieres..

En XSI hay una opcion que es para ver la distancia de un objeto hasta la camara...
Estoy intentando hacer la expresion pero aun no he conseguido nada "bueno"

El script que he hecho es el siguiente:

If attrseldistfromcamera < 30 Then
   SetValue "Sources.ModelSource_Model.active_resolution", 3
      else
      SetValue "Sources.ModelSource_Model.active_resolution", 2
End If


ModelSource_Model seria el nombre del Source name del modelo referenciado.

attrseldistfromcamera es el valor de la distancia de un objeto sobre la camara, pero asin no rula :/

Lo que me falla es el disparador, osea hacer la historia para ke a tal distancia ponga una u otra resolucion... vamos lo mas importante =)

Posteo esto mas que nada para ver si a alguien se le ocurre algo, yo seguire intentandolo.

Un Saludo
« Última modificación: 04 Julio 2003, 15:06:53 por ZiNox »

ZiNox

Re:multiresolution
« Respuesta #3 en: 09 Julio 2003, 16:30:29 »
Aun no he conseguido lograrlo.... y ya me ha rayao un poquito.

Si argun dia lo logro lo posteare =)

Un saludo

Tomás

  • O_O
  • *****
  • 4621
  • Mi no entender
Re:multiresolution
« Respuesta #4 en: 09 Julio 2003, 20:55:56 »
Pues por lo que parece, no se puede no, lo que si puedes hacer es animar el nivel de subdivision de la malla a mano, otra cosa no se me ocurre, que yo sepa solo se puede introducir el factor de distancia a la camara en los shaders.

Un saludo

dingdong

  • **
  • 522
  • espera, que ya llegoooo!!!!!
Re:multiresolution
« Respuesta #5 en: 14 Julio 2003, 13:35:25 »
gracias por el interés, yo digo que sí!!!! que tiene que haber alguna manera.
sigo estrujandome los sesos..... ya os pondré al tanto si encuentro algo

Ding Dong

jdracon

Re:multiresolution
« Respuesta #6 en: 22 Julio 2003, 09:49:37 »
Buenas

Acabo de descubrir este foro y parece q tiene buena pinta, ya va siendo hora q haya más foros en castellado sobre XSI. Aunq seria mejor q hubiese más empresas q usasen XSI.

Y ahora al asunto, lo q quieres hacer se hace de la siguiente manera, digamos q tengo una esfera y dependiendo de la distancia a cámara tendra una u otra resolución:

1- Selecciono esfera y Property - Geometry Aproximation
2- Dentro de este selecciono icono de animación de Surface U y lo arrastro sobre Surface V
3- Se abre Expresion Editor, doy Validate, Apply y cierro el cuadro de dialogo
4- Sobre icono animación Surface U, botón dcho y Expression Editor y creo una condicional
5- Fuction - Conditions - Condition
6- Y aparece lo siguiente:..................cond( <cond> , <true_expr> , <false_expr> )
7- Me posiciono sobre <cond>  y lo cambio por Fuction - Distance - To camera
8- Con lo q quedaria  una cosa tal q asi: cond( ctr_dist_cam( <elem1>......... donde elem1: a q elemento se fija la distancia, en ejemplo esfera
9- Me posiciono sobre <elem1> y Object y busco sphere.
10- Luego me posiciono detras de (sphere.) y voy a Fuction - Conditions - Greater than (<)
11- Con lo q me quedaria una expresión así: cond( ctr_dist_cam( sphere. )>30 , 1, 3)
12- Lo q haria q si la distancia a la esfera es mayor de 30 lo pone el G.A. a 1 si no es mayor de 30 lo pone a 3
13- Habria q refrescar para q funcione

Espero q te sea de ayuda.

dingdong

  • **
  • 522
  • espera, que ya llegoooo!!!!!
Re:multiresolution
« Respuesta #7 en: 23 Julio 2003, 08:49:46 »
hola jdracon,
 gracias por la ayuda y el interés pero no eso eso exactamente lo que buscaba; si no te he entendido mal lo que haces es animar el nivel de suavizado del objeto segun la distancia a la cámara, lo que yo buscaba era poder intercambiar modelos distintos según esa distancia.

Hombre, se podría jugar con la visibilidad de varios modelos según una expresión, pero yo me iba por los reference models....

gracias de todas formas

duardito

Re:multiresolution
« Respuesta #8 en: 23 Julio 2003, 10:25:48 »
pues me parece que ya se como hacer lo que quieres , tienes que conectar los valores de movimiento de la camara con el model en cuestion por ejemplo:

'INFO : "4152 - Data loaded from file D:\softimage\XSI_3.5\Data\tutos\Models\Biped_Skeleton.emdl was created with build number: 3.5.2003.0528 - compatibility version: 350"
SetValue "Sources.ModelSource.active_resolution", 2

 esta seria la informacion en el script editor referente al modelo .

Translate , -0.996087216643275, 0, -7.7847954102333, siRelative, siView, siObj, siXYZ
SaveKey "Camera1.kine.local.posx,Camera1.kine.local.posy,Camera1.kine.local.posz", 20

y esta seria la informacion referente al punto donde se mueve la camara, si los conectas deberia funcionarte.

duardito

Re:multiresolution
« Respuesta #9 en: 23 Julio 2003, 10:59:32 »
pues ya lo he probado abres el script editor y alli pones:

Translate "chasca" , 0, 0, -8.58622322986741, siRelative, siView, siObj, siXYZ
SetValue "Sources.ModelSource.active_resolution", 3

lo ejecutas y se mueve la camara a un sitio y ademas cambia el model, "chasca" es el nombre de la camara y el numero ultimo de la frase  de abajo es  para indicar que modelo quieres. ;D
supongo que esto lo que querias.

dingdong

  • **
  • 522
  • espera, que ya llegoooo!!!!!
Re:multiresolution
« Respuesta #10 en: 24 Julio 2003, 09:04:51 »
veo que te lo curras, pero no. parece que no me explico bien. lo que me has contado es para realizar las acciones de golpe mediante el script, ¿no?

te voy a poner un ejemplo de lo que quiero: quiero automatizar el proceso, es decir , crear expresiones o scripts de forma que no tenga que tocar nada, tan solo animar la cámara mediantes keys y que los modelos cambien automáticamente su resolución.

Por ejemplo, tengo un bosque de árboles, los que están en primer plano quiero que tengan una resolución muy buena (el modelo de high definition) mientras que los de lejos, sean de low-polys.(hasta aquí ningún problema) pero la cámara se mueve por el bosque y los q estaban lejos ahora están cerca y viceversa.

Hombre lo podría hacer a manita, pero si la animación de la cámara cambia tendría que modificarlo todo otra vez.

el problema que yo veo es que al parámetro "Active resolution" no se le puede aplicar una expresión.

de todas maneras,muchos zankius

duardito

Re:multiresolution
« Respuesta #11 en: 24 Julio 2003, 09:48:19 »
pues si te esperas unos dias mirare a ver si te puedo sacar ese script, que es basicamente lo que te he dicho arriba , lo que ademad quieres es que eso pase con diferentes planos de los arboles mientras se mueve la camara.
de todas maneras si pruebas lo que te puse , veras que realmente pasa lo que buscas, adelantas la camara y el objeto cambia de resolucion.
 ;D

dingdong

  • **
  • 522
  • espera, que ya llegoooo!!!!!
Re:multiresolution
« Respuesta #12 en: 24 Julio 2003, 13:19:26 »
bueno parece que con lo que me habeis contado y un poquito de mi cosecha tengo algo que medio funciona:

************************************************************************
dim dist
      dx = GetValue("Referenced_cubemodel.kine.global.posx") - GetValue("chasca.kine.global.posx")
      dy = GetValue("Referenced_cubemodel.kine.global.posy") - GetValue("chasca.kine.global.posy")
      dz = GetValue("Referenced_cubemodel.kine.global.posz") - GetValue("chasca.kine.global.posz")      
dist= round(sqr(dx*dx + dy*dy + dz*dz),3)
msgbox "La distancia a la cámara es:  " & dist

If (dist <20) Then
   SetResolutionOfRefModels "B:Referenced_cubemodel", 3
    Else
     If (dist <50) Then
      SetResolutionOfRefModels "B:Referenced_cubemodel", 2
       Else
           SetResolutionOfRefModels "B:Referenced_cubemodel", 1
     End If
End If

************************************************************************

La primera parte es para calcular la distancia entre el objeto multiresolución y la cámara. He puesto una línea que muestra dicha distancia (sobraría).

La cámara se llama "chasca" y el modelo es "Referenced_cubemodel"

solo me falta un disparador para que el script se ejecute en cada fotograma
¿algún cable más?

Tomás

  • O_O
  • *****
  • 4621
  • Mi no entender
Re:multiresolution
« Respuesta #13 en: 24 Julio 2003, 14:10:16 »
 
solo me falta un disparador para que el script se ejecute en cada fotograma
¿algún cable más?

Bueno, mis conocimientos en este apartado, de scripts, es bastante excaso por no decir nulo, pero gracias al compi ZiNox, (que habló de esto en otro mensaje) creo que lo que necesitas sería esto. Aunque el sabrá decírtelo mejor.

Citar
Para hacerla disparador, es decir que se mueva segun pasan los frames le damos la expresion: Fc*nº
Fc es CurrenFrame
Nº es un numero cualquiera, la pieza cada frame rotara los grados dados por este numero.

Logicamente cambiando lo de la rotación por la operación que quieras...

Para mas info, el post era este...
http://forumxsi.webcindario.com/yabbse/index.php?board=22;action=display;threadid=57;start=msg104#msg104

Un saludo
« Última modificación: 24 Julio 2003, 14:12:06 por |3|D| »

duardito

Re:multiresolution
« Respuesta #14 en: 24 Julio 2003, 23:27:23 »
una pregunta quieres que las transformaciones sean radicales , o sea, en el frame 10 sea X y en el frame 11 sea Y o bien que se transforme de forma progresiva.????
no se si me explico.