Problemas para aplicar más de una textura

Hola amigo:
Mi pregunta es como asociar dos texturas diferentes a dos objetos 3d distintos. Incluso en los tutoriales de Macromedia veo que ellos no lo hacen, cambian las texturas pero las aplican a todos los objetos que tienen en la escena y cuando tienen dos sólo texturan uno. Pero yo vi otros trabajos que ese problema otros profesionales lo tienen superado. ¿Tienen alguna sugerencia que como hacer?. En caso de que se puedan aplicar más de una textura dime como y en caso de no poderse dime como hacen para simularlo.
Gracias por anticipado
Un saludo
José ramón
Respuesta
1
No entiendo muy bien tu pregunta. Si tienes dos objetos distintos, y cada uno tiene dos texturas diferentes, solo tienes que crear los dos objetos usando diferentes nombres y variables, para cada uno creas una textura diferente y se la aplicas. Es como repetir el mismo código dos veces pero cambiándole los nombres.
Por ejemplo para una caja:
obj = member("mundo").newModelResource("obj", #box, #both)
obj.height = 30
obj.width = 200
obj.length = 200
obj = member("mundo").newModel("obj", obj)
mat = member("mundo").newshader("material",#standard)
tex = member("mundo").newTexture("textura",#fromCastMember,member("gris"))
mat.texture = tex
repeat with i = 1 to 6
obj.shaderlist = mat
end repeat
-- Segunda caja
obj1 = member("mundo").newModelResource("obj1", #box, #both)
obj1.height = 30
obj1.width = 200
obj1.length = 200
obj1 = member("mundo").newModel("obj1", obj1)
mat1 = member("mundo").newshader("material1",#standard)
tex1 = member("mundo").newTexture("textura1",#fromCastMember,member("azul"))
mat1.texture = tex1
repeat with i = 1 to 6
obj1.shaderlist = mat1
end repeat
Si no es esto lo que buscas, aclárame un poco la pregunta para que te pueda responder lo que necesitas.
No valoré la pregunta porque quería hacerte otra pero la valoración es excelente. Rehize mi código con parte del tuyo ya que a mi me interesaba posicionar los objetos, luces, etc. pero gracias a eso me funcionó. Mi pregunta ahora es como poder colocar un texto o lo que sea delante del "mundo 3D" para permitir pinchar en zona determinadas. La cuestión es la creación de una calle en 3D y que permita dar información de unos edificios en concreto cuando la cámara avanza y pasa delante de ellos.
Gracias por anticipado
Un saludo
José ramón
José Ramón
Perdona que haya tardado tanto en responder.
Si quieres colocar un campo de texto superponiendo el sprite que contiene el mundo 3D, tienes que colocar ese texto en un canal de sprite superior, y en el sprite del mundo 3D vas a propiedades, pestaña 3d Model, y te aseguras que esté desactivada la opción DTS. Así puedes colocar un miembro cualquiera delante del mundo 3D.
Ahora, para mostrar información en ese campo de texto relacionada con lo que se está viendo en el mundo 3D, tienes dos opciones. Una es comprobar la posición de la cámara y cuando llegue a una determinada posición en la que sabes que está delante de un edificio, mostrar la información correspondiente a ese edificio en el campo de texto. Sabes de qué edificio se trata por la posición de la cámara, cada posición corresponderá a un determinado edificio.
Otra opción es la permitir al usuario pinchar en el edificio del que quiere ver información. Esto quizá es más sencillo. Solo tienes que colocar el siguiente código en el sprite del mundo 3D:
On mouseUp me
punto = the mouseLoc - point(sprite(me.spriteNum).left, sprite(me.spriteNum).top)
m = sprite(me.spriteNum).camera.modelUnderLoc(pt)
put m
end
La variable m contiene el modelo, por ejemplo:
Model("Edificio central")
Ya solo tendrías que mostrar el texto que corresponda a ese modelo.
Como ves, si eres tu quien mueve la cámara, conocerás en todo momento su posición y sabrás a qué edificio enfoca, pero si es el usuario, tendrías que controlar la posición y la orientación y tendrías que relacionar esos dos parámetros con la posición de cada edificio. Pero la segunda opción, cuando el usuario pulsa sobre un edificio ya tienes su nombre y solo tienes que preocuparte de mostrar el texto adecuado.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas