Zurück   Flashforum > Software > 3D

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 12-02-2008, 15:57   #1 (permalink)
Neuer User
 
Registriert seit: Jun 2006
Beiträge: 83
Papervision Darstellungsprobleme

Hallo,

ich nutze Papervision 2.0 um eine Fläche mit mehreren Blöcken (Cubes) darzustellen. Die Blöcke stehen also auf einem Boden. Es kommt jedoch zu massiven Darstellungsschwierigkeiten, so dass ganze Objekte weggeschnitten werden, wenn sie perspektivisch z. B. hintereinander stehen. Dies ist abhängig von der Kameraeinstellung.

http://www.sowas-brauchen-wir-nicht..../container.JPG

Gibt es dafür eine Lösung?

Gruß,
Jacques
jacquesr ist offline   Mit Zitat antworten
Alt 23-02-2008, 22:25   #2 (permalink)
Neuer User
 
Registriert seit: Oct 2005
Beiträge: 61
verwende verschiedene renderlayer. -> effects branch
gandyxxl ist offline   Mit Zitat antworten
Alt 20-03-2008, 10:50   #3 (permalink)
SYS 64738
 
Benutzerbild von Das_Nerzkanu
 
Registriert seit: Oct 2006
Ort: Trier
Beiträge: 214
Gleiches Problem, heftige Blitzer mit PV3D 2.0

Hallo Zusammen,

ich habe hier ein ähnliches Problem wie jacquesr, werde aber aus
Zitat:
verwende verschiedene renderlayer. -> effects branch
nicht richtig schlau. Ich will ja keine Effekte benutzen, sondern verhindern, dass manche Flächen manchmal nicht dargestellt werden.

Setze hier mal den Quellcode rein und hänge die swf unten an. Wäre dankbar für jeden Tipp! ))

PHP-Code:
package  
{
    
import flash.display.Sprite;
    
import flash.text.TextField;
    
import flash.events.Event;  
    
import org.papervision3d.cameras.FreeCamera3D;
    
import org.papervision3d.objects.primitives.Cylinder;
    
import org.papervision3d.objects.DisplayObject3D;
    
import org.papervision3d.materials.ColorMaterial;
    
import org.papervision3d.render.BasicRenderEngine;
    
import org.papervision3d.scenes.Scene3D;
    
import org.papervision3d.view.Viewport3D;

    public class 
Main extends Sprite
    
{

    private var 
viewport:Viewport3D;
    private var 
scene:Scene3D;
    private var 
camera:FreeCamera3D;
    
    private var 
renderer:BasicRenderEngine;
    
    private var 
studio:DisplayObject3D;
    private var 
object3D:Cylinder;
    private var 
matRed:ColorMaterial;
    private var 
matBlue:ColorMaterial;
    
        public function 
Main() 
        {
            
init();
        }
        
        private function 
init():void
        
{
            
initPapervision();
            
initMaterials();
            
initObjects();
            
initListeners();
        }
        
        private function 
initPapervision():void
        
{
            
viewport = new Viewport3D();
            
addChildviewport );
            
            
scene = new Scene3D();
            
camera = new FreeCamera3D();
            
            
renderer = new BasicRenderEngine();
        }
        
        private function 
initMaterials():void
        
{
            
matRed = new ColorMaterial(0xFF6666);
            
matBlue = new ColorMaterial(0x6666FF);
        }
        
        private function 
initObjects():void
        
{
            
studio = new DisplayObject3D();
            
studio.pitch (-35);
            
scene.addChildstudio );
            
            var 
angleNumber 360/5;
            var 
radiusNumber 600;
            
            for (var 
i=0i<=5i++) {
                
object3D = new Cylinder(matRed,150,60,16,1);
                
object3D.25;
                
object3D.Math.cosangle * ( Math.PI 180 ) ) * radius;
                
object3D.Math.sinangle * ( Math.PI 180 ) ) * radius;
                
studio.addChildobject3D );
                
                
object3D = new Cylinder(matBlue,250,30,16,1);
                
object3D.Math.cosangle * ( Math.PI 180 ) ) * radius;
                
object3D.Math.sinangle * ( Math.PI 180 ) ) * radius;
                
studio.addChildobject3D );
                
                
angle+=360/5;
            }
        }
        
        private function 
initListeners():void
        
{
            
addEventListenerEvent.ENTER_FRAMEonEnterFrame );
        }
        
        private function 
onEnterFrame(e:Event):void
        
{
            
studio.yaw (2);
            
renderer.renderScenescenecameraviewport );
            
            
//updateTracer();
        
}
        
        private function 
updateTracer():void
        
{
            
//tracer.text = "object3D: "+object3D;
        
}
    }

Angehängte Grafiken
Dateityp: jpg cylinder.jpg (9,8 KB, 56x aufgerufen)
Angehängte Dateien
Dateityp: zip test-swf.zip (39,3 KB, 26x aufgerufen)
Das_Nerzkanu ist offline   Mit Zitat antworten
Alt 20-03-2008, 11:55   #4 (permalink)
Neuer User
 
Registriert seit: Oct 2005
Beiträge: 61
dann werd ichs mal erklären.

im effects branch gibte es renderlayer.

diese können den mateialien über die die eigenschaft renderlayer zugewiesen werden.

man kann auch über die eigenschaft renderlayer des objektes gehen oder über die funktion setrenderlayer... soweit ich das richtig in erinnerung habe.

renderlayer ist die superklasse.
effectlayer sind von ihr abgeleitet und bitmapeffectlayer wiederum von effectlayer abgeleitet.

das sieht man auch wenn man sich die klassen mal ansieht, also looki looki

die layer kann man nicht nur für effect verwenden, sonder auch um das sortieren der objekte manuell zu steuern.

wie wahrscheinlich jedem auffällt ist der maleralgorithumus in pv3d zwar schnell aber führt oft zu darstellungsfehler der polygone.

zb über den viewport kann man die sortiereigenschaft des renderlayermanagers einstellen:
viewport.renderLayerManager.sortMode = RenderLayerSortMode.INDEX_SORT;

oder auch z_sorting...glaub ich...

alles klar?
gruß
g
gandyxxl ist offline   Mit Zitat antworten
Alt 25-03-2008, 15:33   #5 (permalink)
SYS 64738
 
Benutzerbild von Das_Nerzkanu
 
Registriert seit: Oct 2006
Ort: Trier
Beiträge: 214
Danke für die Antwort, das funktioniert erstmal.

Wer mehr darüber wissen möchte sollte hier

http://www.nabble.com/polygon-failur...html#a15340661

und hier

http://sleepydesign.blogspot.com/200...lass-game.html

nachschauen.

Falls doch jemand noch eine andere Lösung hätte, wie man dem Polygonflackern zu Leibe rücken kann... Ich habe zwar gegurgelt wie ein Weltmeister, aber nichts gefunden.
Das_Nerzkanu ist offline   Mit Zitat antworten
Antwort

Lesezeichen

Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks sind an
Pingbacks sind an
Refbacks sind an



Alle Zeitangaben in WEZ +1. Es ist jetzt 12:40 Uhr.

Domains, Webhosting & Vserver von Host Europe
Unterstützt das Flashforum!
Adobe User Group


Copyright ©1999 – 2012 Marc Thiele