Flashhilfe.de - Flash Community

papervision: helligkeit eines cubes ändern [Flash 9]

Forum > Flash 3D > papervision: helligkeit eines cubes ändern

 


AntwortenRegistrieren Seite1  

 29.06.2009, 01:02 
Benutzerbild von cluster4000
Beiträge: 6
Registriert: Jun 2009

papervision: helligkeit eines cubes ändern
hi,

ich möchte die helligkeit eines papervision 3d objekts verändern.
folgender ansatz funktioniert leider nicht (thecube ist ein Papervison Cube):

thecolor = new Color();
thecolor.brightness = -0.7;
thecube.container.transform.colorTransform = thecolor;

es wird diese fehlermeldung ausgegeben:

TypeError: Error #1009: Der Zugriff auf eine Eigenschaft oder eine Methode eines null-Objektverweises ist nicht möglich.

dabei ist der container eines display3Dobjects doch ein sprite und sollte somit über eine transform eigenschaft verfügen, oder täusche ich mich da?
 29.06.2009, 11:45Re1
Benutzerbild von niquito12
Beiträge: 901
Wohnort: Nether-Bavaria
Registriert: Jun 2008

ActionScript:
1thecube.useowncontainer=true;


Sollte helfen.

:) Gruß niquito der 12.
Qt! www.adrianslaboratory.net
 29.06.2009, 14:20Re2
Benutzerbild von cluster4000
Beiträge: 6
Registriert: Jun 2009

Themenautor/in

danke, aber der cube hat bereits seinen eigenen container, daran liegts also nicht.
 
nicht sichtbar bei eingeloggten Mitgliedern
 29.06.2009, 15:09Re3
Benutzerbild von niquito12
Beiträge: 901
Wohnort: Nether-Bavaria
Registriert: Jun 2008

In welcher Zeile genau tritt der Laufzeitfehler auf?
Qt! www.adrianslaboratory.net
 29.06.2009, 15:51Re4
Benutzerbild von cluster4000
Beiträge: 6
Registriert: Jun 2009

Themenautor/in

hier die fehlermeldung:

TypeError: Error #1009: Der Zugriff auf eine Eigenschaft oder eine Methode eines null-Objektverweises ist nicht möglich.
   at Main/init()[P:\mappe\test\test\final_02\src\Main.as:78]
   at Main()[P:\mappe\test\test\final_02\src\Main.as:41]
   at Preloader/startup()[P:\mappe\test\test\final_02\src\Preloader.as:47]
   at Preloader/checkFrame()[P:\mappe\test\test\final_02\src\Preloader.as:36]

das ganze ist ein flashdevelop as3 projekt mit preloader, also nicht von den beiden letzten zeilen der fehlermeldung verwirren lassen, der preloader hat mit dem eigentlichen problem nichts zu tun.


und hier das script:

ActionScript:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
package
{
   
   //import papervision
   
   import org.papervision3d.cameras.Camera3D;
   
   import org.papervision3d.view.Viewport3D;
   import org.papervision3d.scenes.Scene3D;
   import org.papervision3d.render.BasicRenderEngine;
   //materials
   import org.papervision3d.materials.ColorMaterial;
   //geometry
   import org.papervision3d.objects.primitives.Plane;
   import org.papervision3d.objects.DisplayObject3D;
   
   
   
   //import flash
   import flash.events.Event;
   import flash.display.Sprite;
   import fl.motion.Color;
   
   
   public class  Main extends Sprite
   {
      
      
      
      public var movCam:Camera3D;
      public var viewport:Viewport3D;
      public var scene:Scene3D;
      public var renderer:BasicRenderEngine;
      public var theplane:Plane;
      public var mat:ColorMaterial;
      
      
      
      
      public function Main():void {
         init();
      
      }
      
      public function init():void {
         
         //setup  material
         mat = new ColorMaterial(0xFFFFFF,1);
         
         
         //setup cam
         movCam = new Camera3D();
         movCam.zoom = 116;

         //setup renderer
         renderer = new BasicRenderEngine();
         
         //setup scene
         scene = new Scene3D();

         //setup viewport
         viewport=new Viewport3D(800,600,true,true);
         
         
         //setup plane
         theplane = new Plane(mat, 30, 30);
         theplane.useOwnContainer = true;
         
         //add plane to scene
         scene.addChild(theplane);
         
         //add viewport
         addChild(viewport);
         
         //set up color object
         var thecolor:Color = new Color();
         thecolor.brightness = -0.95;
         theplane.container.transform.colorTransform = thecolor; // hier kommt es zum fehler!!!
         
         //add enterframe listener
         addEventListener(Event.ENTER_FRAME, onEnterFrame);
      }
      
      public function onEnterFrame(e:Event):void {


            renderer.renderScene(scene, movCam, viewport);


         }
   }
   
}

 29.06.2009, 17:54Re5
Benutzerbild von niquito12
Beiträge: 901
Wohnort: Nether-Bavaria
Registriert: Jun 2008

Okay gut das hat sich scheinbar geändert. Erstelle einen eigenen ViewportLayer für dein Objekt mit:

ActionScript:
1var effectLayer:ViewportLayer = plane.createViewportLayer(viewport );


Und wende darauf dein colortransform an.
Qt! www.adrianslaboratory.net
 
nicht sichtbar bei eingeloggten Mitgliedern
 29.06.2009, 19:17Re6
Benutzerbild von cluster4000
Beiträge: 6
Registriert: Jun 2009

Themenautor/in

danke, jetzt gibts wenigstens keine fehlermeldung mehr ;-)
trotzdem ändert sich die helligkeit nicht.
das color object scheint dem effectlayer zwar korrekt zugewiesen zu werden
( trace(effectLayer.transform.colorTransform) gibt "(redMultiplier=0.5, greenMultiplier=0.5, blueMultiplier=0.5, alphaMultiplier=1, redOffset=0, greenOffset=0, blueOffset=0, alphaOffset=0)" aus), die plane wird jedoch kein bißchen dunker.

oder hab ich da was vergessen?

hier das script:

ActionScript:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
package
{
   
   //import papervision
   
   import org.papervision3d.cameras.Camera3D;
   
   import org.papervision3d.view.Viewport3D;
   import org.papervision3d.view.layer.ViewportLayer;
   import org.papervision3d.scenes.Scene3D;
   import org.papervision3d.render.BasicRenderEngine;
   //materials
   import org.papervision3d.materials.ColorMaterial;
   //geometry
   import org.papervision3d.objects.primitives.Plane;
   import org.papervision3d.objects.DisplayObject3D;
   
   
   
   //import flash
   import flash.events.Event;
   import flash.display.Sprite;
   import fl.motion.Color;
   
   
   public class  Main extends Sprite
   {
      
      
      
      public var movCam:Camera3D;
      public var viewport:Viewport3D;
      public var scene:Scene3D;
      public var renderer:BasicRenderEngine;
      public var theplane:Plane;
      public var mat:ColorMaterial;
      
      public var effectLayer:ViewportLayer;
      
      
      
      
      public function Main():void {
         init();
      
      }
      
      public function init():void {
         
         //setup  material
         mat = new ColorMaterial(0xFFFFFF,1);
         
         
         //setup cam
         movCam = new Camera3D();
         movCam.zoom = 116;

         //setup renderer
         renderer = new BasicRenderEngine();
         
         //setup scene
         scene = new Scene3D();

         //setup viewport
         viewport=new Viewport3D(800,600,true,true);
         
         
         //setup plane
         theplane = new Plane(mat, 30, 30);
         theplane.useOwnContainer = true;
         
         //add plane to scene
         scene.addChild(theplane);
         
         //setup effectlayer
         effectLayer = theplane.createViewportLayer(viewport);
         
         //add viewport
         addChild(viewport);
         
         //set up color object
         var thecolor:Color = new Color();
         thecolor.brightness = -0.5;
         effectLayer.transform.colorTransform = thecolor;
         trace(effectLayer.transform.colorTransform);
         
         //add enterframe listener
         addEventListener(Event.ENTER_FRAME, onEnterFrame);
      }
      
      public function onEnterFrame(e:Event):void {


            renderer.renderScene(scene, movCam, viewport);


         }
   }
   
}
 
Themen
Ähnliche Beiträge zum Thema
 

AntwortenRegistrieren Seite1  

Schnellantwort

Du musst registriert sein, um diese Funktion nutzen zu können.
Partner Webseiten: DesignerInAction.de   Designnation.de   Mediengestalter.info   php-resource.de   phpforum.de   phpwelt.de   Pixelio.de   PSD-Tutorials.de   Tutorials.de

Haftungsausschluss   Datenschutzerklärung   Hier Werben   Impressum
© 1999-2012 Sebastian Wichmann - Flashhilfe.de