Comunidad de diseño web y desarrollo en internet online

sombras en caras de cubo con bitmap

Citar            
MensajeEscrito el 10 Jun 2008 12:01 am
Hola!
Esto me trae de cabeza!
No logro aplicar el shader a las caras de mi cubo.
El material de las caras es un bitmap.
Esto es lo que hago

Código :

function imageLoaded (e : Event ) : void { 
var plane:Cube = null;//son cubos pero se ven como planos porque tienen poca profundidad
//Me di cuenta que si queria una sombra especial mi plano debia ser un cubo.

var loadedBmp : Bitmap = e.target.content as Bitmap;
var bmp : BitmapData = loadedBmp.bitmapData;

var planeMaterial:BitmapMaterial;
var bmpWithReflection:BitmapData = new BitmapData(bmp.width, bmp.height*2, false, 0);
planeMaterial = new BitmapMaterial(bmpWithReflection);
planeMaterial.smooth=true;
var s:Shader = new GouraudShader(thelight, 0xFF3300, 0x222222);
var myMaterial = new ShadedMaterial(planeMaterial, s, 0);
var matList : MaterialsList = new MaterialsList;
colorMaterial = new ColorMaterial(0xffffff);
matList.addMaterial(myMaterial, "front");
matList.addMaterial(myMaterial, "back");
matList.addMaterial(myMaterial, "left");
matList.addMaterial(myMaterial, "right");
matList.addMaterial(myMaterial, "top");
matList.addMaterial(myMaterial, "bottom");



El error que me lanza es
TypeError: Error #1009: No se puede acceder a una propiedad o a un método de una referencia a un objeto nulo.
at org.papervision3d.materials.shaders::ShadedMaterial/drawTriangle()
at org.papervision3d.core.render.command::RenderTriangle/render()
at org.papervision3d.render::BasicRenderEngine/org.papervision3d.render:BasicRenderEngine::doRender()
at org.papervision3d.render::BasicRenderEngine/renderScene()
at Portafolio/::loop3D()

Por claudia

103 de clabLevel



 

msie
Citar            
MensajeEscrito el 10 Jun 2008 03:16 pm
Hola.
Últimamente sólo estoy probando otras cosas que no tienen nada que ver con shaders,pero camino a conseguir las,conseguí el efecto de sombrado sin querer.
Te cuento:
Intentaba hacer que un cubo importado desde 3D Max tenga a cada cara un distinto MovieMaterial interactivo(algo sobre lo que se rumorea en los foros que es imposible sin poner se a programar independientemente de los paquetes de papervision great white).
La cosa es que sin aplicar le nada de shaders,tan solo arrancando el punto de luz.Me han salido las sombras del cubo.
Todavía no he llegado hasta los efectos,pero me parece que la cosa con las sombras se complicará a la hora de aplicar materiales dinamicamente.Es decir cuando apliqué al cubo un material,las sombras se han ido.Todos los ejemplos de shaders en internet son aplicados a objetos exportados junto con sus texturas desde lo editores de 3d.
Ojalá me equivoque,pero ahora no tengo tiempo de fijar me en los shaders.Tengo que conseguir interactividad total para las texturas de mis objetos.
Tal vez no te he ayudado mucho,pero quería responder te,porque he posteado varias temas ya en los foros sobre papervision y nadie me ha resondido y es muy frustrante.
He aquí un ejemplo del futuro cercano de flash y 3D:

http://seraf.mediabox.fr/wow-engine/wow-engine-technical-advanced-demo-cloth-demo-02/

Hasta otra!

Por Nycksan

73 de clabLevel



 

msie
Citar            
MensajeEscrito el 10 Jun 2008 03:35 pm
Hola Nick!
Mira esto que fue lo que me enveneno!
http://absolut.com/?chk=1990580614389946975

Al principio crei que era planos pero ahora pienso que son cubos.
Igualmente no logro aplicar ni el Phong ni el Gouraud : ( en un cubo.
En el plano solo servia el FlatShader.
Voy a ver si busco algo en Brasil...

Gracias por tu alentadora respuesta!

Por claudia

103 de clabLevel



 

msie
Citar            
MensajeEscrito el 10 Jun 2008 04:04 pm
Esto son planes,pero me parece que son exportados desde el editor de 3D directamente con las imagenes ya puestas.
A parte de que me pareció extraño que el reflejo del supuesto punto de luz era alargado como si no fuera una luz-punto si no una luz-linea.Por lo que cabe la posibilidad de que sean planos de la primitiva de papervision con un movie clip dentro que al hacer click reproduce el reflejo como una simple animacion.
No te creas pero para muchas cosas que parecen muy complicadas existen soluciones ingeniosas y sencillas.
Lo siento,iba a ver más de la pagina,pero al navegar por el menú,me mandó en otra pagina y al intentar volver,me pidió de nuevo la edad y me frustré y salí del explorador.
Esto es un ejemplo claro de cómo fastidillan a buenas paginas por no pensar en la comodidad y la ergonomia.
Suerte en la busqueda!Te va a faltar.Yo me paso 12 horas al día en buscar tutoriales en internet y tan solo 2 horas aprendo.
Hasta otra!

Por Nycksan

73 de clabLevel



 

msie
Citar            
MensajeEscrito el 10 Jun 2008 04:47 pm
Hola!
Me detúve leyendo tu codigo y me parece algo raro.La forma de declarar la variable:
var s:Shader = new GouraudShader(thelight, 0xFF3300, 0x222222);
¿No tendría que ser:
var s:GouraudShader = new GouraudShader(thelight, 0xFF3300, 0x222222);

Y con todos estos bitmap,me parece que te lias.
Intenta simplificar el código quitando le todas la extras y cuando lo tienes funcionando,haces al archivo una copia de seguridad y entonces empiezas a añadir le cosas.

Yo ahora lo voy a probar y te cuento.

Por Nycksan

73 de clabLevel



 

msie
Citar            
MensajeEscrito el 10 Jun 2008 06:17 pm
Tienes razon Nick, pido disculpas por ello, es el mareo!
En papervision hay que ser muy prolijo.
A ver, creo que ahora esta mejor.
Cuando lo pruebo con objBitmapFileMaterial solo funciona
pero cuando lo pruebo con var objBitmapFileMaterialShaded

Ahi me da ese error del primer post

Código :

function imageLoaded (e : Event ) : void {
var loadedBmp : Bitmap = e.target.content as Bitmap;
var bmp : BitmapData = loadedBmp.bitmapData;

var gouraudShader:GouraudShader = new GouraudShader(thelight, 0xFF3300, 0x222222);
var objBitmapFileMaterial : BitmapFileMaterial = new BitmapFileMaterial("imagenes/emotile1.jpg");
//var objBitmapFileMaterialShaded = new ShadedMaterial(objBitmapFileMaterial, gouraudShader);
var newWidth:Number = planeWidth;
var newHeight:Number = planeHeight;

var matList : MaterialsList = new MaterialsList();
matList.addMaterial(objBitmapFileMaterial, "front");
matList.addMaterial(objBitmapFileMaterial, "back");
matList.addMaterial(objBitmapFileMaterial, "left");
matList.addMaterial(objBitmapFileMaterial, "right");
matList.addMaterial(objBitmapFileMaterial, "top");
matList.addMaterial(objBitmapFileMaterial, "bottom");

var obj3D:Cube;
obj3D = new Cube(matList,200,3,200,3,3,3);
planeGroup.addChild(obj3D);
planes.push(obj3D);

if (currentLoaderIndex < coverFlowData.length-1) {
currentLoaderIndex++
loadNextPlane();
} else {
//si llego a la ultima imagen
iniPosX=(planes.length/2*newWidth*-1)-100;

camera.lookAt( new DisplayObject3D() );
//   inicioPlanos(planes.length/2+1,demoraInicial);
}

}

Por claudia

103 de clabLevel



 

msie
Citar            
MensajeEscrito el 10 Jun 2008 06:28 pm
Lo estoy explorando ahora mismo.
Me sorprende lo complicado que resulta.
Hasta el ejemplo del cubo que se evaporiza en el aire parece más sencillo,pero estoy en ello y veré cómo va.

Por Nycksan

73 de clabLevel



 

msie
Citar            
MensajeEscrito el 10 Jun 2008 06:51 pm
Mira lo que me contestan en el foro oficial
It's possible to attain this effect by using a MovieClip that you step
through based on the planes rotation. That way you can achieve the
glare in the material without any expensive shader or lighting.


Puede que tu tuvieras razon entonces!
Al final todo lo muy bonito es estatico...
No dejes de contarme como resulto!
Yo ahora (paso a paso como me aconsejaste) estoy haciendolo dinamico otra vez.
^^

Por claudia

103 de clabLevel



 

msie
Citar            
MensajeEscrito el 10 Jun 2008 07:33 pm
Muy raro.Ami también me da el mismo error:1009.(Es un error tan conocido en papervision como las pantallas azules de la muerte en windows ).Estoy viendo mi objeto con la clase "DAE" y la clase "Collada" y en las dos veces el objeto sufre cambios de color y sufre.Se ve que intenta reproducir el mismo efecto del que me hablas, pero parpadea y sufre.
Lo unico que me queda es intentar con una escena virtual y si ahí tampoco va,ya no sabré que hacer.
pensando lo mejor este error casi nunca sale con las formas primitivas que vienen con papervision como el cubo y el plano.Es un error tipico para los modelos que uso yo,me estraña que sale también con un cubo basico.
Has eleguido un shader guapo.
Me voy a probar y ojala funcione.
Hasta otra!

Por Nycksan

73 de clabLevel



 

msie
Citar            
MensajeEscrito el 10 Jun 2008 08:23 pm
He aquí una pagina con unos tutoriales bien simples que dicen que valen y funcionan:
http://www.madvertices.com/2008/02/applying-shader-materials.html
Sin embargo,si te pones a leer los comentarios,a un monton de gente les sale el mismo error y otros mencionan que se tiene que utilizar Great white y no el branch que promociona a los shaders.
Yo me rindo,no hay forma de que lo consiga.
Aparte de que a mi me interesa dar le sombra a un material aplicado dinamicamente en papervision(foto o video).El color fijo ya me viene desde 3D Max.
Lo intentaré otra vez,pero más adelante.
Animo y suerte!

Por Nycksan

73 de clabLevel



 

msie
Citar            
MensajeEscrito el 11 Jun 2008 09:53 am
Hola!
Nick que me dices de lo que me contestaron en el foro oficial de ppv3d?
Yo de diseño no se mucho, pero si se pudiera lograr un mc con el efecto que contenga un mc vacio donde cargar la imagen...

Por claudia

103 de clabLevel



 

msie
Citar            
MensajeEscrito el 11 Jun 2008 11:26 am
No te endendí bien.¿Te refieres a mi primera respuesta?
Creo que sí se puede disimular el efecto ese de gouraund.Al menos yo lo haría así,porque como te dije los ejemplos de sombreado son de colores puros y sin fotos.
Aún mas fácil sería utilizar un dae con la imagen ya incrustrada.Solo le visualizas y ya está.Si queres,yo te paso un plano diseñado en 3D Max.Son documentos de texto,asi que con copiar y pegar y ya te lo paso.
Lo de contener un clip donde cargar la imagen y aplicar le el efecto...me temo que yo todavía no sé cómo hacer lo.
Si es posible,me imagino que tiene que ser con truco.
Algo como crear un plano donde cargar la imagen y orto justo delante suyo,casi pegado a él sólo para el efecto gouraund,pero en donde indicas el color negro,tienes que indicar le color alfa 0% de algúna forma.Esto para hacer lo real,pero para la pagina que me enseñaste desde luego que crearía solo un plano donde cargar el movieclip y al hacer clic al plano que el clip reprodusca una segunda capa de encima de un clip distorsionado y nadie se va a dar cuenta.
No me has contado si has probado los ejemplos de la pagina que te pasé la última vez.
Hasta otra!

Por Nycksan

73 de clabLevel



 

msie
Citar            
MensajeEscrito el 11 Jun 2008 11:39 am
Me doy prisa en coregir me.Acabo de intentar lo con las texturas incrustadas y no van las sombras.
Veo que sepas inglés,prueba a buscar en google "imagen aplicado gouraun".
Suerte!

Por Nycksan

73 de clabLevel



 

msie
Citar            
MensajeEscrito el 11 Jun 2008 01:46 pm
Use los ejemplos.
Error no me da pero solo obtengo un color plano...Igual que si aplicaraColorMaterial ??? debo estar haciendo algo mal... o en un plano estas sombras no corren.
Por algo no ponen ejemplos.

Lo del dae me gusto.
Si consigo que alguien me lo haga no te molesto, pero sino ya se que puedo tocar a tu puerta ^^


Gracias por todo tu apoyo Nick!

Por claudia

103 de clabLevel



 

msie
Citar            
MensajeEscrito el 11 Jun 2008 02:40 pm
Esto que has conseguido el efecto es una buena noticia.
Ahora,puedes intentar a jugar con el valor en la declaración que corresponde al material de fondo.
Si no me equivoco al declarar el shader gouraund tienes que poner el punto de luz y dos colores,uno de ellos debe ser el fondo y el otro el color del reflejo.Inttenta a jugar con el del fondo,a poner le bitmapdata o directamente una imagen bitmap,o el alfa,o un bitmap con el alfa a zero y detrás suyo pones el plano con la foto o la pelicula y ya está.Si lo lográs tendrás peliculas con shader gouraund.Pero es cuestion de jugar e intentar una y otra vez.
He aquí dos ejemplos de lo que quiero conseguir con Great White desde una semana y me es imposible:
http://www.rockonflash.com/blog/?p=64 //version anterior de papervision
http://www.flashbookmarks.com/demos/form/ //great white programación
La versiones anteriores de papervision lo hacían en un plis plas,nada más aplicando InteractiveMovieMaterial.En great white lo han quitado.El del formulario girante está hecho con greath white,pero a base de programación y esto va a costar un esfuerzo muy grande a la hora de hacer un diseño atractivo.

Por Nycksan

73 de clabLevel



 

msie
Citar            
MensajeEscrito el 11 Jun 2008 03:34 pm
Que es lo que no sale?
Yo no logro compilarlo... : )
http://papervision3d.googlecode.com/svn/trunk/as3/trunk/examples/InteractiveMovieMaterial/
fijate esto a ver si te sirve

Por claudia

103 de clabLevel



 

msie
Citar            
MensajeEscrito el 11 Jun 2008 05:29 pm
!!Qué susto me he llevado!!
Por poco estropeo los archivos de Great White.No tengo idea por qué no va.Ojo que viene directamente desde googlecode ydebería funcionar.
He intentado con Great white,con Great White Effects,con Papervision 1.5,solo con 1.7 no he intentado porque no la tengo.Lo más probable es que se trate de versión de papervision que no tenemos.
Lo ves-cómo cabrea un tutorial que no hay manera de arrancar lo.
Yo lo mio casi lo he conseguido.He arrastrado desde la biblioteca al escenario unos clips de peliculas(con su video y botones).Luego les he aplicado como material movie clip a mi modelo 3D y van.Es decir cuando les manipulo directamente los cambios se reflejan en el objeto3D.Lo que me mosquea es que cuando intento manipular les desde el mismo objeto 3D,no quieren.
Hay un plugin muy ingenioso que exporta desde el editor 3D los objetos directamente como archivos .as que puedes poner en la carpeta de objects.primitives y disponer no solo con cubo,plano,sfera ect,si no,también con muchas otras formas muy complejas.Lo bueno de ese modo es que rende mejor que todos otros modos(es el que menos recursos del procesador y memoria gasta),lo malo es que no tienes cómo mapear lo ni cómo nombrar sus caras.Tienes que utilizar un único clip o foto como mapeado.
No me queda otra que seguir buscando en internet.Ya me pican los ojos y tengo que ir a dormir pronto.Echaré un último vistazo a ese main.as que no va para intentar pillar la idea y me acuesto.
Hasta otra y suerte!

Por Nycksan

73 de clabLevel



 

msie

 

Cristalab BabyBlue v4 + V4 © 2011 Cristalab
Powered by ClabEngines v4, HTML5, love and ponies.