 |
|
 |
Max Script material segun altura |
 |
28-ago-2008, 15:29
|
#1 (permalink)
|
|
Senior Member
LordEnfermo está desconectado
Fecha de Ingreso: diciembre-2004
Ubicación: Buenos Aires
Edad: 24
Mensajes: 1.229
Poder de Credibilidad: 66
|
Max Script material segun altura
Hola! Ando con un dilema. Estoy tratando de hacer un scriptcito que me permita que un objeto cambie de color rojo cuando esta en altura media, que cambie a rosa cuando este en su altura maxima, y que cuando este en su altura minima cambie a azul.
Estuve buscando en script spot pero no encontre nada que me pudiera ayudar...
Me podrian dar una sugerencia de como encarar el tema?
No lo puedo hacer animando el material porque son muchos objetos que van cambiando de altura en diferentes momentos y tienen que tener esos mismos parametros.
gracias!
|
|
|
|
28-ago-2008, 18:16
|
#2 (permalink)
|
|
Senior Member
jabier está desconectado
Fecha de Ingreso: enero-2007
Ubicación: Rio IV
Edad: 26
Mensajes: 231
Poder de Credibilidad: 29
|
Pues nose como es la toma, pero si es frontal mas o menos frontal, no necesitas un scrip, solo una imagen que tenga los tres colores como franjas horizontales, primero la azul después rojo y por ultimo el de arriba de todo, el roza, luego la pones en el difuce y en el Mapping del Bitmap, pones Environ, Screen, pero así se aria sin scrip, con scrip sin duda quedaria mejor saludos 
|
|
|
|
28-ago-2008, 19:40
|
#3 (permalink)
|
|
FX enfermo
HoriPoi está desconectado
Fecha de Ingreso: noviembre-2005
Edad: 22
Mensajes: 479
Poder de Credibilidad: 51
|
pudiste resolverlo ya? ta bueno como ejercicio, mostra avances! 
|
|
|
|
29-ago-2008, 01:10
|
#4 (permalink)
|
|
Senior Member
LordEnfermo está desconectado
Fecha de Ingreso: diciembre-2004
Ubicación: Buenos Aires
Edad: 24
Mensajes: 1.229
Poder de Credibilidad: 66
|
si, esta bueno como ejercicio de max script jejee.
no suena muy complicado de hacer... pasa que yo tengo cero max script. Sino lo que estaba pensando es que lo puedo resolver con luces, jugando con los parametros de attenuation. Pongo tres luces, y seteo la atenuacion para cada rango de alturas...
otra alternativa no se me ocurre
|
|
|
|
29-ago-2008, 12:07
|
#5 (permalink)
|
|
Senior Member
arkangel está desconectado
Fecha de Ingreso: noviembre-2007
Ubicación: Lejos, muy lejos!
Edad: 23
Mensajes: 352
Poder de Credibilidad: 26
|
no es para nada complicado scriptear lo que vos queres hacer.
lo que si tenes complicado es que necesitas 1 shader unico para cada esfera.
de hecho, nisiquiera necesitas scriptear, basta con el wire editor.
ponele que tus objectos se muevan entre 0 y 10 en Z(que seria la altura en max).
lo unico que tenes q hacer es conectar la posicion en Z de cada objeto, con el gradient del material. lo que si tenes q hacer, es agregar la exprecion para que en vez de 0 a 10, valla de 0 a 1, esto es simple solo usas =/ 10.
cualquier cosita q no se haya entendido me avisas.
|
|
|
|
 |
|
 |
29-ago-2008, 19:59
|
#6 (permalink)
|
|
Super Moderador
EzequielM está desconectado
Fecha de Ingreso: abril-2004
Mensajes: 962
Poder de Credibilidad: 74
|
No necesita un shader para cada objeto. Eso seria una locura
No se en max, pero en maya se podria hacer de varias formas, quizas te sirva de guia
creo que la mas facil y que se me ocurre ahora rapido seria:
1-Crea un nodo samplerInfo, llamemoslo samplerInfo (jeje mas facil)
2-un surfaceShader
3-dos setRange
4-2 blendColors
(estoy pensando en usar nodos del hyperGraph para no codear mucho y que sea mas "user friendly")
Usando el samplerInfo.pointWorldY como input del setRange ya tenes un valor float de la altura...
Por ejemplo, queres en 0 tenga color verde, al 10 rojo y al 20 rosa haces:
primer setRange: input 0 10 ouput 0 1
segundo setRange: input 10 20 output 0 1
Esos dos setRanges se va a ir activando segun la altura (uno de 0 a 10 y el otro de 10 a 20), y el output de esos dos nodos podes conectarlos a los dos blendColors
Seteas el blendColors1 a color1: verde, y color2: rojo
y el blendColors2 a color2:rosa
setRange1.output->blendColor1.blender
setRange2.output->blendColor2.blender
blendColor1.output->blendColor2.color1
Y listo, con eso anidaste los 2 blendColors
el primer color del colorBlend1 es el color que tendria por "default" y en translacion Y<=0, el segundo color es el que tendria "puro" cuando llega a ty=10
y el colorBlend2 blendea al rosa (de t=10 a 20)
Si conectas el blendColors2 al outColor.surfaceShader, y asignas el mismo shader a todos los objetos, te mostrarian todos el color que deberian segun la altura, y te manejas mas facil que con muchos shaders
Sino se podria hacer por
-particulas, intancias y un ramp
-una proyeccion de un ramp con los colores que queres, a la escala que quieras y usar ese color proyectado para cambiar el shader
-y si se me ocurre otra la posteo
Última edición por EzequielM; 29-ago-2008 a las 20:22.
|
|
|
|
29-ago-2008, 20:19
|
#7 (permalink)
|
|
Super Moderador
EzequielM está desconectado
Fecha de Ingreso: abril-2004
Mensajes: 962
Poder de Credibilidad: 74
|
si se te ocurre en max como sacar informacion de translacion global en Y durante el sampleo, despues el setRange lo podrias reemplazar por
de 0 a 1:
(((clamp (salidaMenor,salidaMayor, Y))-salidaMenor)/salidaMayor)
|
|
|
|
29-ago-2008, 20:21
|
#8 (permalink)
|
|
Baneado
eSlacK está desconectado
Fecha de Ingreso: marzo-2004
Ubicación: Buenos Aires - Argentina
Mensajes: 2.026
Poder de Credibilidad: 103
|
eso se puede hacer con wire parameters en max, fijate que es facil, mucho no me acuerdo pero es bastante intuitivo
|
|
|
|
29-ago-2008, 23:03
|
#9 (permalink)
|
|
Super Moderador
EzequielM está desconectado
Fecha de Ingreso: abril-2004
Mensajes: 962
Poder de Credibilidad: 74
|
alguna manera que no sea el wireparameter?
parecido al maya en el sentido de poder usar un mismo shader y no duplicar el shader tantas veces como objetos tengas en la escena?
|
|
|
|
30-ago-2008, 02:47
|
#10 (permalink)
|
|
Baneado
eSlacK está desconectado
Fecha de Ingreso: marzo-2004
Ubicación: Buenos Aires - Argentina
Mensajes: 2.026
Poder de Credibilidad: 103
|
no necesitas varios materiales/shaders, solo necesitas uno... aca hice un mini tutorial...
1)agarras un standard material, le pones en el diffuse un gradient
2)elegis los 3 colores y cambias todo como en la imagen
3)click derecho en el objeto ---> wire parameters
4)elegis lo de la imagen
5)te aparece una banda ke tenes ke soltar en el mismo objeto en este caso, porke el movimiento en Z de la esfera modifica el color del material de la misma 
6)pones todo como dice la imagen y probas, si ves un cambio muy brusco en los colores cambia "Z_Position/15" por "Z_Position/PROBA NUMBEROS MAS ALTOS ACA" (ver imagen #6 en el siguiente post)
y listo move tu esfera arriba/abajo!
|
|
|
|
| Herramientas |
|
|
| Desplegado |
Mode Lineal
|
Normas de Publicación
|
No puedes crear nuevos temas
No puedes responder temas
No puedes subir archivos adjuntos
No puedes editar tus mensajes
caritas están Activado
[IMG] está Activado
Código HTML está Desactivado
|
|
|
|
La franja horaria es GMT -3. Ahora son las 12:56. |
|
|
|
|