[Papervision3D] ShadedMaterials not working with Collada model
Dan
dan_maillists at danwashere.com
Wed Jul 8 08:02:10 PDT 2009
Hi Andy,
yes I've tried using my shadedMaterial first, e.g.
mat.addMaterial(shadedMaterial, "material0");
see here for the result:
http://www.danwashere.com/dev/papervision/shadedtextures_and_collada_problem/ShadingTest.2.html
And I've now traced out the materialsList() for the object, just before
it gets changed in the mouse click handler, and it throws an null object
error:
TypeError: Error #1009: Cannot access a property or method of a null
object reference.
at org.papervision3d.objects::DisplayObject3D/materialsList()
at ShadingTest/handleMouseClick()
So I guess it's as you say - it loses the materials list. Is there a
work around for this you know of?
Cheers,
Dan
andysk8er wrote:
> Hi Dan,
> A few questions:
> Have you tried adding the ShadedMAterial to the model first (instead of the
> FlatShadeMaterial)? Does that fail?
>
> You say that you have tried doing replaceMAterialByName with another
> FlatShadeMAterial, but it failed. Have you tried tracing the model's
> materialsList each time you click to make sure that the material reference
> is still there? It may be a bug in the Collada class.
>
> -Andy
>
>
> DanSearle wrote:
>
>> Hi Andy thanks for your reply. I've simplified the code and the model,
>> but still I can't get it to work.
>>
>> I have two problems:
>>
>> 1. I can't get ShadedMaterials working with my Collada object.
>> 2. replaceMaterialByName is also not working with the Collada object.
>>
>> See here:
>> http://www.danwashere.com/dev/papervision/shadedtextures_and_collada_problem/ShadingTest.html
>> Click anywhere to make it swap the materials (it also moves the object
>> left and right so you know your click has worked) - it fails to swap the
>> materials.
>>
>> Here's the cut down code:
>>
>> package {
>>
>> // imports not included
>>
>> public class PV3DTest extends MovieClip {
>>
>> private var mc:MovieClip;
>>
>> private var basicView:BasicView;
>>
>> private var light:PointLight3D;
>>
>> private var testColladaObject:Collada;
>> private var showingShadedMaterial:Boolean;
>>
>> private var flatShadeMaterial:FlatShadeMaterial;
>> private var movieMaterial:MovieMaterial;
>> private var shadedMaterial:ShadedMaterial;
>>
>> public function PV3DTest($mc:MovieClip) {
>>
>> mc = $mc;
>>
>> // Set up of BasicView and Light not included
>>
>> // Note: Texture_extra_1 is a library clip.
>> movieMaterial = new MovieMaterial(new Texture_extra_1(),
>> false, true, false);
>>
>> shadedMaterial = new ShadedMaterial(movieMaterial, new
>> FlatShader(light, 0xFFFFFF, 0x555555));
>>
>> flatShadeMaterial = new FlatShadeMaterial(light, 0x8888ff,
>> 0x111133);
>>
>> var mat:MaterialsList = new MaterialsList();
>> // Initially use the flatShadeMaterial, which works ok.
>> mat.addMaterial(flatShadeMaterial, "material0");
>> testColladaObject = new Collada("Simple.dae", mat, 0.00005);
>> basicView.scene.addChild(testColladaObject);
>> testColladaObject.x = -100;
>>
>> showingShadedMaterial = false;
>>
>> mc.stage.addEventListener(Event.ENTER_FRAME,
>> handleEnterFrame);
>> mc.stage.addEventListener(MouseEvent.CLICK, handleMouseClick);
>> }
>>
>> private function handleMouseClick($e:MouseEvent):void {
>> // Toggle the material on mouse click.
>> if (showingShadedMaterial) {
>> // replaceMaterialByName seems to do nothing
>>
>> testColladaObject.replaceMaterialByName(flatShadeMaterial, "material0");
>> testColladaObject.x = -100;
>> showingShadedMaterial = false;
>> } else {
>> // I also tested this by swapping one flatShadeMaterial
>> for
>> // another of a diff colour, that didn't work either.
>> testColladaObject.replaceMaterialByName(shadedMaterial,
>> "material0");
>> testColladaObject.x = 100;
>> showingShadedMaterial = true;
>> }
>> }
>>
>> private function handleEnterFrame($e:Event):void {
>> // Spin the object by mouse position
>>
>> basicView.singleRender();
>> }
>> }
>> }
>>
>> Are these known bugs in revision 918 maybe? I'm not sure where to look
>> to find that out.
>>
>> Or is it a problem in my Collada DAE file perhaps?
>> http://www.danwashere.com/dev/papervision/shadedtextures_and_collada_problem/Simple.dae
>>
>> Thanks,
>> Dan
>>
>>
>> andysk8er wrote:
>>
>>> Hi Dan,
>>>
>>> Why don't you try to simplify things in your code first. Simply create a
>>> simple flatshadedmaterial, add it to the materials list and do your
>>> replaceMaterialByName. See if you can get that working. Then, go back and
>>> add in your textures, shaders, etc...
>>>
>>> I guess I'm not really sure why you are declaring your materials as
>>> Classes.
>>> Why not just create MovieAssetMaterials using the linkage name in the
>>> library? Anyway, if you strip all of that stuff out of your code and
>>> simply
>>> use a flatshaded material, you can see if that works. If so, you can
>>> begin
>>> adding your materials back in until it breaks.
>>>
>>> -Andy
>>>
>>>
>>>
>>> DanSearle wrote:
>>>
>>>
>>>> Hi list,
>>>>
>>>> If I understand SVN right I'm on revision 918.
>>>>
>>>> I'm using the free version of Google SketchUp (v6.4.112) to make DAE
>>>> files (using that hack to get the DAE from the KMZ it outputs), but I
>>>> can't get the ShadedMaterials to work with it.
>>>>
>>>> Here's a demo I've made:
>>>> http://www.danwashere.com/dev/papervision/shadedtextures_and_collada_problem/DanWasHereWorld.html
>>>> (Mouse Up/Down to move in and out, Mouse Left/Right to move the light
>>>> source)
>>>>
>>>> The paddling pool is meant to be shaded - the cube uses the same shaded
>>>> materials as the pool to prove that the materials themselves are ok.
>>>>
>>>> Is it maybe that the DAE created in this way isn't compatible with
>>>> ShadedMaterials? Here's a link to the DAE file:
>>>> http://www.danwashere.com/dev/papervision/shadedtextures_and_collada_problem/paddling%20pond.dae
>>>>
>>>> Or in case it's a code problem, here's the relevant code, or you can
>>>> also get the AS file here:
>>>> http://www.danwashere.com/dev/papervision/shadedtextures_and_collada_problem/DanWasHereWorld.as
>>>>
>>>> (Note that I have the textures in the FLA library)
>>>>
>>>> *** I've cut the code from this reply cos it wasn't useful ***
>>>>
>>>> I'd love an explanation of how to do this if someone can help?
>>>>
>>>> Many thanks,
>>>> Dan
>>>>
>>>>
>>>>
>>>> _______________________________________________
>>>> Papervision3D mailing list
>>>> Papervision3D at osflash.org
>>>> http://osflash.org/mailman/listinfo/papervision3d_osflash.org
>>>>
>>>>
>>>>
>>>>
>>>
>>> ------------------------------------------------------------------------
>>>
>>>
>>> No virus found in this incoming message.
>>> Checked by AVG - www.avg.com
>>> Version: 8.5.375 / Virus Database: 270.13.2/2215 - Release Date: 07/02/09
>>> 18:06:00
>>>
>>>
>>>
>> _______________________________________________
>> Papervision3D mailing list
>> Papervision3D at osflash.org
>> http://osflash.org/mailman/listinfo/papervision3d_osflash.org
>>
>>
>>
>
>
> ------------------------------------------------------------------------
>
>
> No virus found in this incoming message.
> Checked by AVG - www.avg.com
> Version: 8.5.375 / Virus Database: 270.13.8/2223 - Release Date: 07/07/09 17:54:00
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://osflash.org/pipermail/papervision3d_osflash.org/attachments/20090708/a425a1fa/attachment.html>
More information about the Papervision3D
mailing list