Con respecto al tema del archivo javascript que te crea Flash, también hay que subirlo. Si no tienes muchas nociones de javascript mejor no toques esta parte. Este archivo sirve para que el explorador no muestre el fastidioso mensaje de "pulsa sobre este componente si quieres activarlo" (o algo así) que aparece en una página cuando lleva contenidos Flash, y también sirve, junto al código de la página html (que tampoco sería convieniente que cambiaras si no tienes muy claro lo que hace) para detectar la versión de Flash y en caso de no ser la 9, indicar al usuario que se actualice.
private function onLoadComplete(evt:FileLoadEvent):void {
var cubo:TriangleMesh3D;
var material:BitmapFileMaterial;
for (var i:uint=1;i<7; i++) {
cubo = TriangleMesh3D(geometria.getChildByName("caja"+i.toSt ring()));
material = BitmapFileMaterial(cubo.getMaterialByName("mat"+i .toString()));
material.interactive = true;
cubo.addEventListener(InteractiveScene3DEvent.OBJECT_CLICK, onMouseClick);
}
this.addEventListener(Event.ENTER_FRAME, onEnterFrame);
</fieldset>
TriangleMex3D es la clase padre de la que heredan la primitivas de Papervision. Así, un cubo, un plano, una esfera... "son" TriangleMex3D, y las llamo así para no tener que particularizar cada caso de primitiva.
Este método lo que hace es obtener por medio de getChildByName la geometría que he exportado desde Max. Si te fijas, estoy localizando los objetos por su nombre que di en Max. Yo llamé a las cajas: caja1, caja2,... y ahora utilizo un bucle para obtenerlas. Si tu tienes, por ejemplo 8 objetos llamados "miCaja1", "miCaja2"... tendrías que cambiar "caja" por "miCaja" para que ese bucle que ahora iría de 1 a 8, recorra todos "TUS OBJETOS".
Lo mismo hay que hacer en la línea que recupero los materiales para decirles que sean interactivos: En getMaterialByName tienes que cambiar el literal "mat" para que se adapte al nombre del material que diste en Max.
Creo que la mejor opción, si no tienes mucha experiencia, es que mapees los objetos como harías normalmente, los ilumines, y cuando estés contento con el aspecto renderizado que obtengas (sin hacer nada especial de wrappers, shells etc ;-). entres a la ventana de Baked to texture y elijas la opción en el apartado Baked Material: Output intoSource. Esto va a hacer que pierdas el material original (por lo que guarda el archivo max antes con otro nombre) pero no te dará problemas de exportación. Una vez tostados, elige los objetos y conviertelos en malla (los seleccionas y boton derecho/Convert to editable mesh.
si te sigue dando problemas tienes la opción de no renderizar a textura: lo único que ahora va a parecer que la escena no está iluminada y te va a exportar las texturas originales que has aplicado a los materiales.
Lo de actionscript te lo pongo en otro mensaje para diferenciarlo un poco.
nada, pruebo y pruebo y no me sale. Creo que lo que hago mal es algun paso de 3dstudio en materiales, camaras o objetos... o tostar no se. Algo debe ser que no hago bien porque el fallo me hace referencia a collada.
te cuento lo que hago yo para un ejemplo sencillo:
-creo un cubo, un plano bajo el y una luz skylight.
-creo un material con un diffuse que es un archivo de imagen.
-escojo el cubo; en el menu modificar -> lista de modificadores. Busco la opcion Unwrap UVW. Busco la pestaña del menu Parameters y edit.
-Me aparece una nueva ventana nueva. Bajo esta pantalla, en el apartado Selection Modes, selecciono la tercera opcion (Face Sub-Object Mode).
-En esta pantalla, menu superior -> Mapeado (Mapping) -> Aplanar mapeado (Flatten Mapping).
-Pongo spacing 0, acepto y cierro la ventana.
-En el menu principal, selecciono Renderización -> Renderizar a textura.
-Otra nueva pantalla. Selecciono el cubo, y le doy en la pestaña Output -> Add -> CompleteMap.
-Modifico estas características:
-Name: Textura
-FileName and Type: busco la ruta y hago un archivo nuevo textura1.jpg
-Size: 1024
-En la siguiente pestaña de esta pantalla (Baked Material), selecciono la opcion Render to Files Only.
-Le doy a cerrar la pantalla.
-Ahora ya me voy al menu principal Archivo -> Exportar -> creo un archivo .DAE y lo grabo en la carpeta dae (como tu ejemplo).
Esto es todo lo referente a lo que hago en el 3d studio. Este sistema me lo baje de un tutorial que encontré en una web. Puede que contenga errores y por eso no lo hago bien. a ver que te parece.
gracias!
pd. acabo de ver en una web de papervision que tenia que hacer referencia a la carpeta papervision3d/as3/trunk/scr . puede que coja los códigos de ahi y por eso me diera error. he probado pero ahora me aparece este nuevo mensaje:
Vertices3d.as, linea 195 -> 1000: Referencia ambigua a Vertex3D.
puede ser porque una esfera no tiene vertices verdad? o es por otro tema?
bueno bueno parece que tengo faena para estudiar jejejej
voy a probar todo lo que me dices y ya te contaré que tal.
varios temas:
- he modificado el tema del canal. Es verdad, estaba en 3 y lo he cambiado a 1. No ha funcionado.
Estoy pensando que el error puede que sea problema del código. Te cuento. La nueva prueba que habia realizado son unas esferas (como si fueran planetas) en el espacio en 3d studio. Les puse a todas la misma textura, las ... vaya, creo que he encontrado un posible error jejej (escribo mientras pruebo). Las imágenes no estan bien tostadas, porque quito las luces y no permanece en la textura. puede que el error venga de ahi. Me puedes explicar como tostar? Puede que no lo hiciera bien siguiendo un tutorial que encontre.
siguiendo con el tema, la orden que tenemos para los cubos es:
private function onLoadComplete(evt:FileLoadEvent):void {
var cubo:TriangleMesh3D;
var material:BitmapFileMaterial;
for (var i:uint=1;i<7; i++) {
cubo = TriangleMesh3D(geometria.getChildByName("caja"+i.toString()));
material = BitmapFileMaterial(cubo.getMaterialByName("mat"+i.toString()));
material.interactive = true;
cubo.addEventListener(InteractiveScene3DEvent.OBJECT_CLICK, onMouseClick);
}
this.addEventListener(Event.ENTER_FRAME, onEnterFrame);
para las esferas, habia probado de cambiar el triangleMesh3d por sphere. Esto es correcto? O el programa carga los materiales por triangulación. En el ejemplo de los cubos, inserté un plano en 3dstudio, le di un material, importe a .dae y al ejecutar el flash me aparece perfectamente. Si no le daba material me aparecia el plano definido por triangulos, supongo que esta es la orden. o no?
- estoy mirando, linea a linea, el código para comprender que hace cada parte para saber que lo que toco sirve para algo jejejej
la primera parte que observo es la cámara (de momento me parece mas fácil). He ido modificando los valores para ver que efectos me hace. Ahora, me surge la duda de la orden:
camara.z = -900;
camara.y=250;
me da la sensacion que hacen el mismo efecto, pero no puede ser ya que tengo un poco de conocimiento de ejes en el espacio y estas dos direcciones no son lo mismo jejejej
- una dudilla menor (aunque no menos importante). Cuando publico en flash el proyecto, me crea el archivo .html y .swf complementario, y un archivo javascript .js. Estos son los 3 archivos que necesito subir a mi ftp para poder verlo en la web no? O hace falta que suba todos los archivos que utilizo?
Lo comento porque subi los archivos, cambié el nombre del archivo creado (MenuCubosFlash) por el de index, para que me lo reconozca como página principal pero no me funciona.
de nuevo, agradecerte mucho la paciencia que tienes conmigo porque ya ves que soy muy muy novato. Como no encuentro tutoriales para super-inexpertos como yo cuesta un poco, pero bueno, con paciencia...
Ah, se me ha pasado el "tema" de Flex. La razón de utilizar Flex es que publicando así es muy fácil adjuntar el código: eclipse tiene una opción que rápidamente te publica el código de la aplicación que estás haciendo, y símplemente pulsando boton derecho accedes a él.
De hecho, los ejemplos que subo yo no tienen
"aspecto Flex", sino más bien parecen hechos en Flash (el IDE).
El único problema que te puedes encontrar al reutilizar el código es que estas clases extienden de la clase "canvas" de Flex, que por así decirlo es su "movieclip" (perdón a los puristas por la comparación, pero es para entendernos ;-)).
Verás que las clases que utilizo extienden de Canvas, todas ellas tienen una primera línea del tipo:
public class MiClaseTal extends Canvas
si esta definición la cambias por
public class MiClaseTal extends Sprite
o por
public class MiClaseTal extends MovieClip
puedes utilizarlas directamente desde Flash cambiando todo lo que sea UIComponent por Sprite o Movieclip
El blog coconnut estaba originalmente pensado para Flex, y yo soy un simple "invitado" en él. Ya se sabe, no saques mucho los piés del plato si no quieres que te "desinviten". Esto último es broma..., si en el fondo me gusta Flex y todo :-D.
Un saludo.
P.D.:Lo que sí te recomendaría es que si vas a programar en actionscript te busques un editor más "amigable" que el que trae Flash. Yo utilizo Eclipse, pero hay muchos más, como SEPY. Si pides opinión seguro en en este foro te recomiendan alguno más.
editar: jejeje lo he conseguido!!! He modificado los valores de la class MenuCubos, en las últimas lineas:
geometria.rotationY = 0;
geometria.rotationX = 0;
poniendo los valores a 0 impido el rotar la imagen!!! buenoooo, poco a poco!
Sí, por ahí está la clave :-). Si quieres que no se mueva el escenario deja en el método onEnterFrame sólo la linea:
engine.renderScene(escena, camara, visor)
En este sentido, PV es muy explicativo de lo que hace: le estamos diciendo al motor de render que renderice la escena donde hemos añadido la geometría Collada, con la cámara que hemos creado y que lo muestre en el visor.
Por cierto, como agrupais un grupo de Planes en PV3D para, por ejemplo, moverlos todos a la vez?
Un movieclip? un sprite? Estoy usando DisplayObject3D y no se si es por eso o no tengo problemas de visibilidad (se me muestra antes una cosa que esta por debajo y tal)... :S
Hola:
Sí, yo también utilizo esté método para agrupar objetos y que se muevan juntos; lo que no me ha ocurrido es lo que comentas de problemas de visibilidad. Me creo un nodo DisplayObject3D y es al que añado los objetos como hijos, para después moverlo y que se muevan los hijos con él
Vayamos por partes:
1. Si estás tostando las texturas en Max y no tienes mucha experiencia ahí va una "traca" de posibles problemas.
- El mapeado de la textura tostada, por defecto lo hace en el canal 3 del objeto (deberías cambiar el canal a 1) para no interferir con el canal 1 que es el que inicialmente utiliza el objeto para su mapeado.
- Para no perder el material original, Max te crea por defecto un material shell (una carcasa) con el material tostado. Si cargas en el editor de materiales un material ya tostado, verás que tiene 2: el original y el nuevo. Debes dejar sólo el nuevo en el material (el que lleva las texturas tostadas y llama shell el programa); o bien, cuando vayas a tostar en la ventana Render to texture selecciona en el apartado "Baked material" la opción "Output Into Source". Esto es peligroso, porque si no tienes guardada una versión previa del archivo, vas a perder el material original, si tienes que repetir el tostado. Pero la ventaja es que automáticamente el material del objeto es el material tostado, valga la redundancia.
Como te dije, la forma de comprobar que todo va bien es desactivar las luces y ver que la escena parece que sigue iluminada (las luces y sombras ahora están "tostadas" en las texturas). Por cierto, no sé a quién se le ocurrió esto del tostado/Baked de texturas :-D.
- Por defecto, Max guarda las texturas como tga, cambialas a jpg (en la casilla File Name and Type).
bueno, viendo que no me desenvuelvo bien, creo que voy a preguntar cosas mas básicas:
-el código actionscript que funciona como clases, que veo que es la base de todo el proceso papervision, se puede aprender de alguna manera? Es decir, me gustaria saber el código a que se refiere cada cosa porque voy borrando cosillas pero no hacen el efecto que yo quiero.
Por ejemplo, en el archivo de los cubos que preparaste, me gustaria quitar el efecto que hace referencia al movimiento del raton (es decir, que se vea fijo la imagen de los cubos). He probado con quitar todas aquellas ordenes que hacen referencia al "visor", pero cuando lo ejecuto ya no se ve nada.
editar: jejeje lo he conseguido!!! He modificado los valores de la class MenuCubos, en las últimas lineas:
geometria.rotationY = 0;
geometria.rotationX = 0;
poniendo los valores a 0 impido el rotar la imagen!!! buenoooo, poco a poco!
Por cierto, como agrupais un grupo de Planes en PV3D para, por ejemplo, moverlos todos a la vez?
Un movieclip? un sprite? Estoy usando DisplayObject3D y no se si es por eso o no tengo problemas de visibilidad (se me muestra antes una cosa que esta por debajo y tal)... :S
he vuelto a modificar el archivo 3d studio poniendole un material como me indicas, activando la casilla pero me vuelve a aparecer el mismo listado de error que anteriormente. No se si es algo que no modifico en el código y si deberia hacerlo. Si quieres te paso por mail los archivos que he creado para mirarlos.
En lo que hace referencia al otro tema (carrusel3d) voy a ponerme a ver si entiendo el funcionamiento. Lo de modificar el punto de vista de la cámara si se hacerlo porque he ido trasteando la prueba de los cubos que hiciste jejeje. El otro tema ya de momento no se como hacerlo, voy a trastear tambien, con tu permiso.
editar: he estado mirando el ejemplo carrusel pero veo que está preparado para flex y yo solo tengo el flash cs. Me tengo que bajar este programa? A parte, creo que es un poco complicado para mi jejeje no acabo de seguirlo porque se me escapan muchas órdenes.
Hola:
El ejemplo que me has pasado es muy similar al que te comenté que hay en mi blog, llamado carrusel3d.
Sólo sería remodelar el código para que la cámara en vez de mirar desde arriba, lo haga más frontal, y que las imágenes se distribuyan en un plano vertical en vez del horizontal.
Tienes todos los permisos del mundo para reutilizar ese código ;-)
Me ha pasado ya más de una vez, la gente no asocia en ese ejemplo el icono de la casa a Home (volver a plano general), tendré que cambiarlo por otro más evidente, o poner sencillamente la palabra Home.
Un saludo
Hola:
Creo que el problema es que no has asignado texturas a los materiales. Cuando papervision procesa un archivo collada siempre busca una textura en el material. Asignale a los materiales una textura en difuse, en Max, y exportalo de nuevo.
Tambien es MUY IMPORTANTE que al exportar actives la casilla de rutas relativas para que no guarde las rutas absulutas. Me explico, si lo tienes desactivado, el archivo dae (collada) va a escribir las rutas a las texturas en la forma:
C:\modelos3d\misTexturas\textura.jpg
y cuando lo cuelgues en una página web no la va a encontrar. Si activas esta casilla de rutas relativas, el archivo dae guardará algo como:
./misTexturas/textura.jpg
y este archivo sí lo puedes colgar en cualquier sitio
Un saludo.
P.D.: Los archivos dae son realmente xml, puedes editarlos en cualquier momento y modificarlos. Si hay un material que se te ha olvidado darle textura, puedes abrir el dae con dreamweaver, por ejemplo, e indicarle la textura. O si se te ha olvidado activar la casilla de rutas relativas, editarlo y ponerlas como te he comentado más arriba.
asi probando para empezar a entender este funcionamiento he hecho unos planetas en un espacio realizado con 3dstudio.
He intentado seguir todos los pasos, cambiando lo que creo que hace falta para adaptar el sistema de los cubos a este nuevo, pero me da un listado de error.
He comprimido los archivos pero no se como colgarlos aqui para que los puedas revisar. De momento te escribo el listado de errores para ver si puedes intuir lo que es:
DisplayObject3D: null
DisplayObject3D: null
Papervision3D Public Alpha 2.0 - Great White (3.12.07)
PV3D 2.0a WARNING : DO NOT USE WITH BETA 9 PLAYERS. ONLY WITH OFFICIAL TO TEST.
CHECK YOUR VERSION!
DisplayObject3D: null
DisplayObject3D: null
DisplayObject3D: null
DisplayObject3D: Camera01_Target
DisplayObject3D: Direct01_Target
DisplayObject3D: Direct01
DisplayObject3D: Sky01
DisplayObject3D: Esfera7
Collada material _1_-_Default not found.
DisplayObject3D: Esfera6
DisplayObject3D: Geoesfera07
Collada material ColorMaterial not found.
DisplayObject3D: Camera01
DisplayObject3D: Esfera1
DisplayObject3D: Esfera2
DisplayObject3D: Esfera3
DisplayObject3D: Esfera4
DisplayObject3D: Esfera5
TypeError: Error #1009: No se puede acceder a una propiedad o a un método de una referencia a un objeto nulo.
at jel.com.pv3d2::MenuPlanetas/::onLoadComplete()
at flash.events::EventDispatcher/flash.events:EventDispatcher::dispatchEventFunction()
at flash.events::EventDispatcher/dispatchEvent()
at org.papervision3d.objects.parsers::Collada/::buildCollada()
at org.papervision3d.objects.parsers::Collada/::onComplete()
at flash.events::EventDispatcher/flash.events:EventDispatcher::dispatchEventFunction()
at flash.events::EventDispatcher/dispatchEvent()
at flash.net::URLLoader/flash.net:URLLoader::onComplete()
entrando en esta web aparece un elemento principal y tras el unos elementos secundarios que, al clicar, la cámara se va hacia ellos y se abre el menu secundario.
Yo quiero hacer esto mismo de la manera siguiente:
Aparece el menu principal de cubos. Yo creo que deberia ser un elemento fijo, no como ahora que puedo hacer girarlo. Cada cubo sera, por ejemplo, un apartado como "Home" "Proyectos" "Curriculum"... y clicando en el, la cámara se va hacia el elemento de atrás correspondiente, donde ira el contenido de la web.
Supongo que lo que pido es un poco complicado pero estoy dispuesto a aprender, aunque sea muy poco a poco jejeje
bueno, tengo que reconocer que me lo acabas de explicar fenomenalmente jejjee me he enterado de todo (y eso que cuesta porque me suena todo muy nuevo!!).
He comprendido los pasos que me indicas. Me los guardare muy bien para tenerlos siempre en mente!
ahora bien, unas dudillas menores:
- en un ejemplo he visto como funciona eso de tostar las superficies. Ahora bien, como le has puesto tu la textura que tienen (color amarillo y letras en cada cara)?
- el último paso 5 hay que hacerlo una vez se tengan los archivos ya listos verdad? No se nada de códigos actionscript, asi que voy deduciendo lo que quiere hacer cada orden.
- no conozco la clase que me indicas ExternalInterface, pero he visto que en vuestro blog hay un ejemplo sobre este tipo. voy a mirarmelo.
-he mirado el efecto de carrusel de fotos que me dices y realmente no es lo que yo habia visto. En el ejemplo que te comentaba las opciones estaban dispersas en la pantalla, y al clicar sobre ellas, habia un zoom de la cámara y se posicionaba sobre la opcion. Luego con un boton"volver" se volvia al menu inicial.
Lo mejor, vamos a hacer un resumen del proceso a seguir, para fijar conceptos, que diría un antiguo profesor mío ;-):
1. En 3D Studio, Maya o cualquier otro programa de modelado/animación que exporte en formato Collada (extensión *.dae) modelas la geometría que quieres mostrar más tarde en Flash.
2. Iluminas la escena hasta conseguir el aspecto deseado y haces un "tostado de texturas" ("Render to texture" en 3DStudio Max). Esto lo que hace es aplicar un material a cada objeto de la escena con unas texturas "tostadas", o sea, que llevan la sombra incorporada. Esta técnica proviene del mundo del videojuego: los juegos de PS2 no suelen calcular las sombras de los escenarios; es la textura la que lleva ya "dibujada" dicha sombra.
3. Despues de renderizar a textura tienes que ver en el visor de Max con las luces desactivadas, la escena como si siguieran estando activas. Si no consigues esto, algo va mal.
4. Exportas a formato collada (*.dae) la escena. Puedes utilizar el plugin gratuito que aparece en un enlace que ya te posteé.
5. Te creas un proyecto en Flash y a través de actionscript y el paquete de clases Papervision3D, obtienes un archivo swf embebido en una página html, que es lo que puedes colgar en Internet ;-). Esta parte es la que hacen las clases que te posteé en rar.
6. Y finalmente, no sé si conoces la clase ExternalInterface (actionscript), que te permite ejecutar funciones javascritp que estén en el código html de la página web. A través de ella le deberías pasar a una función javascript el elemento que ha pulsado el usuario, para que esta función hiciera lo que deseas: Mostrar una página web en una capa, mandar un e-mail, lo que se te ocurra.
Por cierto, me has puesto unos enlaces que parece que tienen un enfoque distinto. Ejemplos de menús 3D basados en imágenes, con su codigo, puedes encontrar en nuestro blog. Entra al ejemplo carrusel3D y hay de un tipo (de los que hacen zoom al objeto seleccionado). En el ejemplo del puzzle y del juego simón, el menú de selección también está hecho en Papervision (es el típico menú rotativo). Y todo esto no utiliza geometria modelada en Max y exportada en formato Collada, si esto supone un problema.
Un saludo, y ánimo, que Papervision3D lo han hecho muy asequible. Deberíamos de hacerles una estatua :-)
Estoy probando de hacer un cubo sobre un plano. He seguido un tutorial en el cual puedo solucionar el tema que habia preguntado antes sobre el archivo de imagen con los lados del cubo desplegado. Eso ya lo he conseguido.
Ahora el tema está en saber que pasos he de seguir para crear el archivo necesario para grabarlo a flash (.swf creo que es), asi lo puedo aplicar a futuras pruebas con este sistema.
El archivo .html tambien se crea desde 3d studio?
Mas dudas jejeeje!!!
Editar: Creo que el archivo que necesito es dae... no se, tengo un lio en este tema. A ver si me lo puedes aclarar.
Muchas gracias!!
pd: he encontrado una web en la que tambien se ve algo parecido al efecto que quiero realizar.
Aparece un planeta en primer plano (que podria ser mi menu de cubos) y en el fondo 3 planetas mas. cuando se pulsa sobre un planeta, se hace un zoom y se acerca a el. A mi me gustaria que esto pasara cuando se pulse sobre uno de los cubos del menu.
no era exactamente lo que buscaba, pero creo que se entiende mejor.
por ejemplo, en primer término aparece el menu de los cubos. Cuano se pulsa sobre uno de ellos, se hace un zoom a una de las imágenes de atras (el apartado seleccionado). A ver que te parece!
bueno, lo he descargado, descomprimido y enlazado desde el flash.
Perfecto!!!!
Me salen las cajas, con su textura y puedo clicar sobre ellas (aunque de momento no hace nada, dejando que se escriba el enlace a los apartados de la web).
El problema es que cuando agregaba las rutas en configuracion, habia que hacer desde el MenuCubo general, y habia entrado en una de las carpetas (jel.com).
Voy a estudiarme el código a ver si aprendo cada órden a que se refiere. Puede que la orden que me deja poder mover la cámara la desactive y se vea fijo en pantalla.
He visto en alguna web que por aqui en el foro se comenta (no me digas cual era porque no la recuerdo) en la que se veia un menu principal, y detras, como en la lejania, los apartados en gris. Cuando clicabas en una opcion del menu, se acercaba la parte correspondiente del fondo hasta el frente. Luego con un boton de volver se vuelve a alejar y a aparecer el menu. No se si me he explicado bien. Buscare cual de las webs era.
Otra cosa que queria preguntarte era sobre las texturas de los cubos. He visto que hay 6 imágenes que corresponden a cada uno. Se basan en la imágen desplegada de cada cubo, con todos sus lados en formato plano. Como lo has creado, desde el 3d studio? o has hecho tu el bitmap y lo has enlazado?
bueno, ya te dije que soy muy principiante jejeje.
voy a descargarme el archivo y probar lo que me comentas. Cuando haya podido visualizar el efecto del flash que has creado vuelvo por aqui, a seguir con los siguientes pasos.
Hola de nuevo:
Lo de cargar los archivos de Collada es tan fácil ahora que seguro que no te has dado ni cuenta cuándo lo hace el código ;-)
Un simple
geometria = new Collada("miArchivoCollada.DAE");
escena3D.addChild(geometria);
y ya tienes tu archivo max, exportado en formato dae, en el escenario.
Esta nueva versión de Papervision se ha simplificado de tal forma que impresiona. Ahora, el que no quiera utilizarla, que lo diga claro: es porque no quiere ;-)
Un saludo.
P.D.: En el anterior enlace a la wikipedia, donde estaba el enlace al repositorio también hay otro a los plugins de Collada, por si tienes dificultad en localizarlos. De todas formas, no sé si sabes que Papervision admite tambien escenarios, y animaciones, de... emoción... Quake 2!!! Lo digo por si tienes algún escenario por ahí que quieras ver dentro de Flash. Lo que no entiendo es por qué Adobe no se pone las pilas e incorpora de forma nativa esta tecnología (implementada directamente en Flash Player con un motor de render específico, y no a través de actionscript). El paso hacia delante que podría dar Flash (el IDE) sería incluso mayor que cuando incorporó la tecnología Flv para el streaming de vídeo. Pero bueno, ahí estamos.
Hola:
Eso es que no le has dado la ruta exacta del branch GreatWhite. Por si te has bajado alguna otra versioón de las clases aquí te pongo exactamente las que he utilizado:
http://blog.coconnut.com/source/jel/GreatWhite.rar Descomprime el archivo en tu disco duro, y en Flash configura la ruta de clases (de la forma que vimos antes; si tienes algún problema la ayuda de Flash también explica dónde está este botón de configuración) "exactamente" para la carpeta GreatWhite que se te habrá creado al descomprimir el rar.
El mensaje que te da es porque no localiza las clases del paquete de Papervision
Un saludo.
FR_xx
vaya, ahora otro problema que no entiendo.
cuando intento ejecutar cualquier elemento (como el de los cubos que tenia, o los nuevos que estoy haciendo) siempre me aparece este error:
Vertices3D.as, Linea 195 -> 1000: Referencia ambigua a Vertex3D.
siempre me sale esto ahora y no se me ejecuta nada. buff que rollo no entender!!! jejeje
pd. nada nada, ya lo he solucionado. un error tonto (como no)!!
tpmmds
Hola:
Con respecto al tema del archivo javascript que te crea Flash, también hay que subirlo. Si no tienes muchas nociones de javascript mejor no toques esta parte. Este archivo sirve para que el explorador no muestre el fastidioso mensaje de "pulsa sobre este componente si quieres activarlo" (o algo así) que aparece en una página cuando lleva contenidos Flash, y también sirve, junto al código de la página html (que tampoco sería convieniente que cambiaras si no tienes muy claro lo que hace) para detectar la versión de Flash y en caso de no ser la 9, indicar al usuario que se actualice.
Un saludo.
tpmmds
Hola:
<fieldset>
private function onLoadComplete(evt:FileLoadEvent):void {
var cubo:TriangleMesh3D;
var material:BitmapFileMaterial;
for (var i:uint=1;i<7; i++) {
cubo = TriangleMesh3D(geometria.getChildByName("caja"+i.toSt ring()));
material = BitmapFileMaterial(cubo.getMaterialByName("mat"+i .toString()));
material.interactive = true;
cubo.addEventListener(InteractiveScene3DEvent.OBJECT_CLICK, onMouseClick);
}
this.addEventListener(Event.ENTER_FRAME, onEnterFrame);
</fieldset>
TriangleMex3D es la clase padre de la que heredan la primitivas de Papervision. Así, un cubo, un plano, una esfera... "son" TriangleMex3D, y las llamo así para no tener que particularizar cada caso de primitiva.
Este método lo que hace es obtener por medio de getChildByName la geometría que he exportado desde Max. Si te fijas, estoy localizando los objetos por su nombre que di en Max. Yo llamé a las cajas: caja1, caja2,... y ahora utilizo un bucle para obtenerlas. Si tu tienes, por ejemplo 8 objetos llamados "miCaja1", "miCaja2"... tendrías que cambiar "caja" por "miCaja" para que ese bucle que ahora iría de 1 a 8, recorra todos "TUS OBJETOS".
Lo mismo hay que hacer en la línea que recupero los materiales para decirles que sean interactivos: En getMaterialByName tienes que cambiar el literal "mat" para que se adapte al nombre del material que diste en Max.
Un saludo
tpmmds
Hola, con respecto al tostado de texturas:
Creo que la mejor opción, si no tienes mucha experiencia, es que mapees los objetos como harías normalmente, los ilumines, y cuando estés contento con el aspecto renderizado que obtengas (sin hacer nada especial de wrappers, shells etc ;-). entres a la ventana de Baked to texture y elijas la opción en el apartado Baked Material: Output intoSource. Esto va a hacer que pierdas el material original (por lo que guarda el archivo max antes con otro nombre) pero no te dará problemas de exportación. Una vez tostados, elige los objetos y conviertelos en malla (los seleccionas y boton derecho/Convert to editable mesh.
si te sigue dando problemas tienes la opción de no renderizar a textura: lo único que ahora va a parecer que la escena no está iluminada y te va a exportar las texturas originales que has aplicado a los materiales.
Lo de actionscript te lo pongo en otro mensaje para diferenciarlo un poco.
Un saludo
chicote
Menudo coñazo programar esto. Que alguien le haga una UI ya!! :P
FR_xx
nada, pruebo y pruebo y no me sale. Creo que lo que hago mal es algun paso de 3dstudio en materiales, camaras o objetos... o tostar no se. Algo debe ser que no hago bien porque el fallo me hace referencia a collada.
te cuento lo que hago yo para un ejemplo sencillo:
-creo un cubo, un plano bajo el y una luz skylight.
-creo un material con un diffuse que es un archivo de imagen.
-escojo el cubo; en el menu modificar -> lista de modificadores. Busco la opcion Unwrap UVW. Busco la pestaña del menu Parameters y edit.
-Me aparece una nueva ventana nueva. Bajo esta pantalla, en el apartado Selection Modes, selecciono la tercera opcion (Face Sub-Object Mode).
-En esta pantalla, menu superior -> Mapeado (Mapping) -> Aplanar mapeado (Flatten Mapping).
-Pongo spacing 0, acepto y cierro la ventana.
-En el menu principal, selecciono Renderización -> Renderizar a textura.
-Otra nueva pantalla. Selecciono el cubo, y le doy en la pestaña Output -> Add -> CompleteMap.
-Modifico estas características:
-Name: Textura
-FileName and Type: busco la ruta y hago un archivo nuevo textura1.jpg
-Size: 1024
-En la siguiente pestaña de esta pantalla (Baked Material), selecciono la opcion Render to Files Only.
-Le doy a cerrar la pantalla.
-Ahora ya me voy al menu principal Archivo -> Exportar -> creo un archivo .DAE y lo grabo en la carpeta dae (como tu ejemplo).
Esto es todo lo referente a lo que hago en el 3d studio. Este sistema me lo baje de un tutorial que encontré en una web. Puede que contenga errores y por eso no lo hago bien. a ver que te parece.
gracias!
pd. acabo de ver en una web de papervision que tenia que hacer referencia a la carpeta papervision3d/as3/trunk/scr . puede que coja los códigos de ahi y por eso me diera error. he probado pero ahora me aparece este nuevo mensaje:
Vertices3d.as, linea 195 -> 1000: Referencia ambigua a Vertex3D.
puede ser porque una esfera no tiene vertices verdad? o es por otro tema?
FR_xx
bueno bueno parece que tengo faena para estudiar jejejej
voy a probar todo lo que me dices y ya te contaré que tal.
varios temas:
- he modificado el tema del canal. Es verdad, estaba en 3 y lo he cambiado a 1. No ha funcionado.
Estoy pensando que el error puede que sea problema del código. Te cuento. La nueva prueba que habia realizado son unas esferas (como si fueran planetas) en el espacio en 3d studio. Les puse a todas la misma textura, las ... vaya, creo que he encontrado un posible error jejej (escribo mientras pruebo). Las imágenes no estan bien tostadas, porque quito las luces y no permanece en la textura. puede que el error venga de ahi. Me puedes explicar como tostar? Puede que no lo hiciera bien siguiendo un tutorial que encontre.
siguiendo con el tema, la orden que tenemos para los cubos es:
private function onLoadComplete(evt:FileLoadEvent):void {
var cubo:TriangleMesh3D;
var material:BitmapFileMaterial;
for (var i:uint=1;i<7; i++) {
cubo = TriangleMesh3D(geometria.getChildByName("caja"+i.toString()));
material = BitmapFileMaterial(cubo.getMaterialByName("mat"+i.toString()));
material.interactive = true;
cubo.addEventListener(InteractiveScene3DEvent.OBJECT_CLICK, onMouseClick);
}
this.addEventListener(Event.ENTER_FRAME, onEnterFrame);
para las esferas, habia probado de cambiar el triangleMesh3d por sphere. Esto es correcto? O el programa carga los materiales por triangulación. En el ejemplo de los cubos, inserté un plano en 3dstudio, le di un material, importe a .dae y al ejecutar el flash me aparece perfectamente. Si no le daba material me aparecia el plano definido por triangulos, supongo que esta es la orden. o no?
- estoy mirando, linea a linea, el código para comprender que hace cada parte para saber que lo que toco sirve para algo jejejej
la primera parte que observo es la cámara (de momento me parece mas fácil). He ido modificando los valores para ver que efectos me hace. Ahora, me surge la duda de la orden:
camara.z = -900;
camara.y=250;
me da la sensacion que hacen el mismo efecto, pero no puede ser ya que tengo un poco de conocimiento de ejes en el espacio y estas dos direcciones no son lo mismo jejejej
- una dudilla menor (aunque no menos importante). Cuando publico en flash el proyecto, me crea el archivo .html y .swf complementario, y un archivo javascript .js. Estos son los 3 archivos que necesito subir a mi ftp para poder verlo en la web no? O hace falta que suba todos los archivos que utilizo?
Lo comento porque subi los archivos, cambié el nombre del archivo creado (MenuCubosFlash) por el de index, para que me lo reconozca como página principal pero no me funciona.
de nuevo, agradecerte mucho la paciencia que tienes conmigo porque ya ves que soy muy muy novato. Como no encuentro tutoriales para super-inexpertos como yo cuesta un poco, pero bueno, con paciencia...
gracias de nuevo!!
tpmmds
Ah, se me ha pasado el "tema" de Flex. La razón de utilizar Flex es que publicando así es muy fácil adjuntar el código: eclipse tiene una opción que rápidamente te publica el código de la aplicación que estás haciendo, y símplemente pulsando boton derecho accedes a él.
De hecho, los ejemplos que subo yo no tienen
"aspecto Flex", sino más bien parecen hechos en Flash (el IDE).
El único problema que te puedes encontrar al reutilizar el código es que estas clases extienden de la clase "canvas" de Flex, que por así decirlo es su "movieclip" (perdón a los puristas por la comparación, pero es para entendernos ;-)).
Verás que las clases que utilizo extienden de Canvas, todas ellas tienen una primera línea del tipo:
public class MiClaseTal extends Canvas
si esta definición la cambias por
public class MiClaseTal extends Sprite
o por
public class MiClaseTal extends MovieClip
puedes utilizarlas directamente desde Flash cambiando todo lo que sea UIComponent por Sprite o Movieclip
El blog coconnut estaba originalmente pensado para Flex, y yo soy un simple "invitado" en él. Ya se sabe, no saques mucho los piés del plato si no quieres que te "desinviten". Esto último es broma..., si en el fondo me gusta Flex y todo :-D.
Un saludo.
P.D.:Lo que sí te recomendaría es que si vas a programar en actionscript te busques un editor más "amigable" que el que trae Flash. Yo utilizo Eclipse, pero hay muchos más, como SEPY. Si pides opinión seguro en en este foro te recomiendan alguno más.
tpmmds
FRACTO
editar: jejeje lo he conseguido!!! He modificado los valores de la class MenuCubos, en las últimas lineas:
geometria.rotationY = 0;
geometria.rotationX = 0;
poniendo los valores a 0 impido el rotar la imagen!!! buenoooo, poco a poco!
Sí, por ahí está la clave :-). Si quieres que no se mueva el escenario deja en el método onEnterFrame sólo la linea:
engine.renderScene(escena, camara, visor)
En este sentido, PV es muy explicativo de lo que hace: le estamos diciendo al motor de render que renderice la escena donde hemos añadido la geometría Collada, con la cámara que hemos creado y que lo muestre en el visor.
Un saludo, y ánimo que ya lo tienes "dominao" ;-)
tpmmds
ozke
Por cierto, como agrupais un grupo de Planes en PV3D para, por ejemplo, moverlos todos a la vez?
Un movieclip? un sprite? Estoy usando DisplayObject3D y no se si es por eso o no tengo problemas de visibilidad (se me muestra antes una cosa que esta por debajo y tal)... :S
Hola:
Sí, yo también utilizo esté método para agrupar objetos y que se muevan juntos; lo que no me ha ocurrido es lo que comentas de problemas de visibilidad. Me creo un nodo DisplayObject3D y es al que añado los objetos como hijos, para después moverlo y que se muevan los hijos con él
Un saludo.
tpmmds
Hola:
Vayamos por partes:
1. Si estás tostando las texturas en Max y no tienes mucha experiencia ahí va una "traca" de posibles problemas.
- El mapeado de la textura tostada, por defecto lo hace en el canal 3 del objeto (deberías cambiar el canal a 1) para no interferir con el canal 1 que es el que inicialmente utiliza el objeto para su mapeado.
- Para no perder el material original, Max te crea por defecto un material shell (una carcasa) con el material tostado. Si cargas en el editor de materiales un material ya tostado, verás que tiene 2: el original y el nuevo. Debes dejar sólo el nuevo en el material (el que lleva las texturas tostadas y llama shell el programa); o bien, cuando vayas a tostar en la ventana Render to texture selecciona en el apartado "Baked material" la opción "Output Into Source". Esto es peligroso, porque si no tienes guardada una versión previa del archivo, vas a perder el material original, si tienes que repetir el tostado. Pero la ventaja es que automáticamente el material del objeto es el material tostado, valga la redundancia.
Como te dije, la forma de comprobar que todo va bien es desactivar las luces y ver que la escena parece que sigue iluminada (las luces y sombras ahora están "tostadas" en las texturas). Por cierto, no sé a quién se le ocurrió esto del tostado/Baked de texturas :-D.
- Por defecto, Max guarda las texturas como tga, cambialas a jpg (en la casilla File Name and Type).
Un saludo.
FR_xx
bueno, viendo que no me desenvuelvo bien, creo que voy a preguntar cosas mas básicas:
-el código actionscript que funciona como clases, que veo que es la base de todo el proceso papervision, se puede aprender de alguna manera? Es decir, me gustaria saber el código a que se refiere cada cosa porque voy borrando cosillas pero no hacen el efecto que yo quiero.
Por ejemplo, en el archivo de los cubos que preparaste, me gustaria quitar el efecto que hace referencia al movimiento del raton (es decir, que se vea fijo la imagen de los cubos). He probado con quitar todas aquellas ordenes que hacen referencia al "visor", pero cuando lo ejecuto ya no se ve nada.
editar: jejeje lo he conseguido!!! He modificado los valores de la class MenuCubos, en las últimas lineas:
geometria.rotationY = 0;
geometria.rotationX = 0;
poniendo los valores a 0 impido el rotar la imagen!!! buenoooo, poco a poco!
ozke
Por cierto, como agrupais un grupo de Planes en PV3D para, por ejemplo, moverlos todos a la vez?
Un movieclip? un sprite? Estoy usando DisplayObject3D y no se si es por eso o no tengo problemas de visibilidad (se me muestra antes una cosa que esta por debajo y tal)... :S
FR_xx
he podido abrir el archivo con el dreamweaver (como me decias en el ejemplo que estaba realizando). Ahora sigo mirando a ver!
FR_xx
hola de nuevo,
he vuelto a modificar el archivo 3d studio poniendole un material como me indicas, activando la casilla pero me vuelve a aparecer el mismo listado de error que anteriormente. No se si es algo que no modifico en el código y si deberia hacerlo. Si quieres te paso por mail los archivos que he creado para mirarlos.
En lo que hace referencia al otro tema (carrusel3d) voy a ponerme a ver si entiendo el funcionamiento. Lo de modificar el punto de vista de la cámara si se hacerlo porque he ido trasteando la prueba de los cubos que hiciste jejeje. El otro tema ya de momento no se como hacerlo, voy a trastear tambien, con tu permiso.
editar: he estado mirando el ejemplo carrusel pero veo que está preparado para flex y yo solo tengo el flash cs. Me tengo que bajar este programa? A parte, creo que es un poco complicado para mi jejeje no acabo de seguirlo porque se me escapan muchas órdenes.
gracias de nuevo!
tpmmds
Hola:
El ejemplo que me has pasado es muy similar al que te comenté que hay en mi blog, llamado carrusel3d.
Sólo sería remodelar el código para que la cámara en vez de mirar desde arriba, lo haga más frontal, y que las imágenes se distribuyan en un plano vertical en vez del horizontal.
Tienes todos los permisos del mundo para reutilizar ese código ;-)
Me ha pasado ya más de una vez, la gente no asocia en ese ejemplo el icono de la casa a Home (volver a plano general), tendré que cambiarlo por otro más evidente, o poner sencillamente la palabra Home.
Un saludo
tpmmds
Hola:
Creo que el problema es que no has asignado texturas a los materiales. Cuando papervision procesa un archivo collada siempre busca una textura en el material. Asignale a los materiales una textura en difuse, en Max, y exportalo de nuevo.
Tambien es MUY IMPORTANTE que al exportar actives la casilla de rutas relativas para que no guarde las rutas absulutas. Me explico, si lo tienes desactivado, el archivo dae (collada) va a escribir las rutas a las texturas en la forma:
C:\modelos3d\misTexturas\textura.jpg
y cuando lo cuelgues en una página web no la va a encontrar. Si activas esta casilla de rutas relativas, el archivo dae guardará algo como:
./misTexturas/textura.jpg
y este archivo sí lo puedes colgar en cualquier sitio
Un saludo.
P.D.: Los archivos dae son realmente xml, puedes editarlos en cualquier momento y modificarlos. Si hay un material que se te ha olvidado darle textura, puedes abrir el dae con dreamweaver, por ejemplo, e indicarle la textura. O si se te ha olvidado activar la casilla de rutas relativas, editarlo y ponerlas como te he comentado más arriba.
FR_xx
buenas,
asi probando para empezar a entender este funcionamiento he hecho unos planetas en un espacio realizado con 3dstudio.
He intentado seguir todos los pasos, cambiando lo que creo que hace falta para adaptar el sistema de los cubos a este nuevo, pero me da un listado de error.
He comprimido los archivos pero no se como colgarlos aqui para que los puedas revisar. De momento te escribo el listado de errores para ver si puedes intuir lo que es:
DisplayObject3D: null
DisplayObject3D: null
Papervision3D Public Alpha 2.0 - Great White (3.12.07)
PV3D 2.0a WARNING : DO NOT USE WITH BETA 9 PLAYERS. ONLY WITH OFFICIAL TO TEST.
CHECK YOUR VERSION!
DisplayObject3D: null
DisplayObject3D: null
DisplayObject3D: null
DisplayObject3D: Camera01_Target
DisplayObject3D: Direct01_Target
DisplayObject3D: Direct01
DisplayObject3D: Sky01
DisplayObject3D: Esfera7
Collada material _1_-_Default not found.
DisplayObject3D: Esfera6
DisplayObject3D: Geoesfera07
Collada material ColorMaterial not found.
DisplayObject3D: Camera01
DisplayObject3D: Esfera1
DisplayObject3D: Esfera2
DisplayObject3D: Esfera3
DisplayObject3D: Esfera4
DisplayObject3D: Esfera5
TypeError: Error #1009: No se puede acceder a una propiedad o a un método de una referencia a un objeto nulo.
at jel.com.pv3d2::MenuPlanetas/::onLoadComplete()
at flash.events::EventDispatcher/flash.events:EventDispatcher::dispatchEventFunction()
at flash.events::EventDispatcher/dispatchEvent()
at org.papervision3d.objects.parsers::Collada/::buildCollada()
at org.papervision3d.objects.parsers::Collada/::onComplete()
at flash.events::EventDispatcher/flash.events:EventDispatcher::dispatchEventFunction()
at flash.events::EventDispatcher/dispatchEvent()
at flash.net::URLLoader/flash.net:URLLoader::onComplete()
muchas gracias!
FR_xx
vale ya he encontrado el ejemplo que te decia.
http://www.grimshaw-architects.com/grimshaw/launcher.html?in_projectid=
entrando en esta web aparece un elemento principal y tras el unos elementos secundarios que, al clicar, la cámara se va hacia ellos y se abre el menu secundario.
Yo quiero hacer esto mismo de la manera siguiente:
Aparece el menu principal de cubos. Yo creo que deberia ser un elemento fijo, no como ahora que puedo hacer girarlo. Cada cubo sera, por ejemplo, un apartado como "Home" "Proyectos" "Curriculum"... y clicando en el, la cámara se va hacia el elemento de atrás correspondiente, donde ira el contenido de la web.
Supongo que lo que pido es un poco complicado pero estoy dispuesto a aprender, aunque sea muy poco a poco jejeje
a ver que te parece.
de nuevo muchas gracias!
FR_xx
bueno, tengo que reconocer que me lo acabas de explicar fenomenalmente jejjee me he enterado de todo (y eso que cuesta porque me suena todo muy nuevo!!).
He comprendido los pasos que me indicas. Me los guardare muy bien para tenerlos siempre en mente!
ahora bien, unas dudillas menores:
- en un ejemplo he visto como funciona eso de tostar las superficies. Ahora bien, como le has puesto tu la textura que tienen (color amarillo y letras en cada cara)?
- el último paso 5 hay que hacerlo una vez se tengan los archivos ya listos verdad? No se nada de códigos actionscript, asi que voy deduciendo lo que quiere hacer cada orden.
- no conozco la clase que me indicas ExternalInterface, pero he visto que en vuestro blog hay un ejemplo sobre este tipo. voy a mirarmelo.
-he mirado el efecto de carrusel de fotos que me dices y realmente no es lo que yo habia visto. En el ejemplo que te comentaba las opciones estaban dispersas en la pantalla, y al clicar sobre ellas, habia un zoom de la cámara y se posicionaba sobre la opcion. Luego con un boton"volver" se volvia al menu inicial.
Seguro que vuelvo a preguntarte!!
Muchas gracias!
tpmmds
Lo mejor, vamos a hacer un resumen del proceso a seguir, para fijar conceptos, que diría un antiguo profesor mío ;-):
1. En 3D Studio, Maya o cualquier otro programa de modelado/animación que exporte en formato Collada (extensión *.dae) modelas la geometría que quieres mostrar más tarde en Flash.
2. Iluminas la escena hasta conseguir el aspecto deseado y haces un "tostado de texturas" ("Render to texture" en 3DStudio Max). Esto lo que hace es aplicar un material a cada objeto de la escena con unas texturas "tostadas", o sea, que llevan la sombra incorporada. Esta técnica proviene del mundo del videojuego: los juegos de PS2 no suelen calcular las sombras de los escenarios; es la textura la que lleva ya "dibujada" dicha sombra.
3. Despues de renderizar a textura tienes que ver en el visor de Max con las luces desactivadas, la escena como si siguieran estando activas. Si no consigues esto, algo va mal.
4. Exportas a formato collada (*.dae) la escena. Puedes utilizar el plugin gratuito que aparece en un enlace que ya te posteé.
5. Te creas un proyecto en Flash y a través de actionscript y el paquete de clases Papervision3D, obtienes un archivo swf embebido en una página html, que es lo que puedes colgar en Internet ;-). Esta parte es la que hacen las clases que te posteé en rar.
6. Y finalmente, no sé si conoces la clase ExternalInterface (actionscript), que te permite ejecutar funciones javascritp que estén en el código html de la página web. A través de ella le deberías pasar a una función javascript el elemento que ha pulsado el usuario, para que esta función hiciera lo que deseas: Mostrar una página web en una capa, mandar un e-mail, lo que se te ocurra.
Por cierto, me has puesto unos enlaces que parece que tienen un enfoque distinto. Ejemplos de menús 3D basados en imágenes, con su codigo, puedes encontrar en nuestro blog. Entra al ejemplo carrusel3D y hay de un tipo (de los que hacen zoom al objeto seleccionado). En el ejemplo del puzzle y del juego simón, el menú de selección también está hecho en Papervision (es el típico menú rotativo). Y todo esto no utiliza geometria modelada en Max y exportada en formato Collada, si esto supone un problema.
Un saludo, y ánimo, que Papervision3D lo han hecho muy asequible. Deberíamos de hacerles una estatua :-)
FR_xx
una cosilla del tema inicial.
Estoy probando de hacer un cubo sobre un plano. He seguido un tutorial en el cual puedo solucionar el tema que habia preguntado antes sobre el archivo de imagen con los lados del cubo desplegado. Eso ya lo he conseguido.
Ahora el tema está en saber que pasos he de seguir para crear el archivo necesario para grabarlo a flash (.swf creo que es), asi lo puedo aplicar a futuras pruebas con este sistema.
El archivo .html tambien se crea desde 3d studio?
Mas dudas jejeeje!!!
Editar: Creo que el archivo que necesito es dae... no se, tengo un lio en este tema. A ver si me lo puedes aclarar.
Muchas gracias!!
pd: he encontrado una web en la que tambien se ve algo parecido al efecto que quiero realizar.
http://www.starwars.com/
Aparece un planeta en primer plano (que podria ser mi menu de cubos) y en el fondo 3 planetas mas. cuando se pulsa sobre un planeta, se hace un zoom y se acerca a el. A mi me gustaria que esto pasara cuando se pulse sobre uno de los cubos del menu.
FR_xx
bueno, he encontrado esto.
http://www.meet-your-city.com/
no era exactamente lo que buscaba, pero creo que se entiende mejor.
por ejemplo, en primer término aparece el menu de los cubos. Cuano se pulsa sobre uno de ellos, se hace un zoom a una de las imágenes de atras (el apartado seleccionado). A ver que te parece!
FR_xx
bueno, lo he descargado, descomprimido y enlazado desde el flash.
Perfecto!!!!
Me salen las cajas, con su textura y puedo clicar sobre ellas (aunque de momento no hace nada, dejando que se escriba el enlace a los apartados de la web).
El problema es que cuando agregaba las rutas en configuracion, habia que hacer desde el MenuCubo general, y habia entrado en una de las carpetas (jel.com).
Voy a estudiarme el código a ver si aprendo cada órden a que se refiere. Puede que la orden que me deja poder mover la cámara la desactive y se vea fijo en pantalla.
He visto en alguna web que por aqui en el foro se comenta (no me digas cual era porque no la recuerdo) en la que se veia un menu principal, y detras, como en la lejania, los apartados en gris. Cuando clicabas en una opcion del menu, se acercaba la parte correspondiente del fondo hasta el frente. Luego con un boton de volver se vuelve a alejar y a aparecer el menu. No se si me he explicado bien. Buscare cual de las webs era.
Otra cosa que queria preguntarte era sobre las texturas de los cubos. He visto que hay 6 imágenes que corresponden a cada uno. Se basan en la imágen desplegada de cada cubo, con todos sus lados en formato plano. Como lo has creado, desde el 3d studio? o has hecho tu el bitmap y lo has enlazado?
muchas gracias!
FR_xx
bueno, ya te dije que soy muy principiante jejeje.
voy a descargarme el archivo y probar lo que me comentas. Cuando haya podido visualizar el efecto del flash que has creado vuelvo por aqui, a seguir con los siguientes pasos.
muchas gracias de nuevo por tu ayuda!
tpmmds
Hola de nuevo:
Lo de cargar los archivos de Collada es tan fácil ahora que seguro que no te has dado ni cuenta cuándo lo hace el código ;-)
Un simple
geometria = new Collada("miArchivoCollada.DAE");
escena3D.addChild(geometria);
y ya tienes tu archivo max, exportado en formato dae, en el escenario.
Esta nueva versión de Papervision se ha simplificado de tal forma que impresiona. Ahora, el que no quiera utilizarla, que lo diga claro: es porque no quiere ;-)
Un saludo.
P.D.: En el anterior enlace a la wikipedia, donde estaba el enlace al repositorio también hay otro a los plugins de Collada, por si tienes dificultad en localizarlos. De todas formas, no sé si sabes que Papervision admite tambien escenarios, y animaciones, de... emoción... Quake 2!!! Lo digo por si tienes algún escenario por ahí que quieras ver dentro de Flash. Lo que no entiendo es por qué Adobe no se pone las pilas e incorpora de forma nativa esta tecnología (implementada directamente en Flash Player con un motor de render específico, y no a través de actionscript). El paso hacia delante que podría dar Flash (el IDE) sería incluso mayor que cuando incorporó la tecnología Flv para el streaming de vídeo. Pero bueno, ahí estamos.
tpmmds
Hola:
Eso es que no le has dado la ruta exacta del branch GreatWhite. Por si te has bajado alguna otra versioón de las clases aquí te pongo exactamente las que he utilizado:
http://blog.coconnut.com/source/jel/GreatWhite.rar
Descomprime el archivo en tu disco duro, y en Flash configura la ruta de clases (de la forma que vimos antes; si tienes algún problema la ayuda de Flash también explica dónde está este botón de configuración) "exactamente" para la carpeta GreatWhite que se te habrá creado al descomprimir el rar.
El mensaje que te da es porque no localiza las clases del paquete de Papervision
Un saludo.
ozke
Creo q los puedes cargar por codigo al igual que cargas una imagen externa.
No deberia ser muy dificil encontrar eso en Google.
FR_xx
otro tema, los archivos de collada donde los tengo que instalar? hay que enlazar tambien estos con el flash o con 3dstudio??
FR_xx
vale, parece que ha ido bien.
ahora solo me aparecen 2 errores, en las órdenes tales como:
1046: No se encontró el tipo o no es una constante en tiempo de compilación: FileLoadEvent.
1046: No se encontró el tipo o no es una constante en tiempo de compilación: InteractiveScene3DEvent.
sabes a que se pueden deber?