[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