Kein Licht in Box-Objekt

Status
Nicht offen für weitere Antworten.
G

Gast

Gast
Hallo,
ich habe in einem SimpleUniverse ein Box-Objekt, in dem ich mich bewegen möchte. Das funktioniert ja auch, aber in der Box ist es trotz PointLight dunkel. Weiß jemand wie mandas ändern kann?
 

Illuvatar

Top Contributor
Also erstmal: Wenn du in der Box bist, wird die Box zunächst mal wahrscheinlich gar nicht angezeigt. Das nennt sich Culling, du kannst da in der Appearance in den PolygonAttributes was drehen.
Damit die Box jetzt richtig schön beleuchtet wird und so, musst du dann allerdings auch noch die Normalen generieren lassen (im Konstruktor bei Primflags Primitive.GENERATE_NORMALS übergeben (vielleicht auch GENERATE_NORMALS_INWARD, bin grad nicht sicher).
 
G

Gast

Gast
Danke, jetzt sehe ich den Innenraum der Box. Ich kann aber immer noch aus der Box herausgehen, was ich vermeiden möchte. Muss man die einzelnen Koordinaten per Hand prüfen oder gibt es da einen einfacheren Weg?
Hier ist der Quelltext:

Hauptklasse:
Code:
import com.sun.j3d.utils.universe.SimpleUniverse;
import com.sun.j3d.utils.geometry.*;
import com.sun.j3d.utils.geometry.Box;
import javax.media.j3d.BranchGroup;
import javax.swing.*;
import javax.media.j3d.*;
import javax.vecmath.*;
import com.sun.j3d.utils.image.*;

public class DreiD {
  public DreiD() {
    SimpleUniverse universe = new SimpleUniverse();
    BranchGroup group = new BranchGroup();
    Appearance BoxAppearance = new Appearance();
    TransformGroup BoxTG = new TransformGroup(),RotTG = new TransformGroup();
    Transform3D BoxT3D = new Transform3D();
    AmbientLight ALgt = new AmbientLight(new Color3f(0f,1f,0f));
    BoundingSphere BigBounds = new BoundingSphere(new Point3d(),2000000000);
    ALgt.setInfluencingBounds(BigBounds);
    group.addChild(ALgt);
    BoxT3D.setTranslation(new Vector3f(0,0,0));
    BoxAppearance.setMaterial(new Material(new Color3f(0f,0f,1f),new Color3f(1f,0f,0f),new Color3f(1f,0f,0f),new Color3f(1f,1f,1f), 1f));
    BoxAppearance.setTexture((new TextureLoader("Kachel.jpg",null)).getTexture());
    BoxAppearance.setTexCoordGeneration(new TexCoordGeneration(TexCoordGeneration.OBJECT_LINEAR,TexCoordGeneration.TEXTURE_COORDINATE_2));
    BoxAppearance.setTextureAttributes(new TextureAttributes(TextureAttributes.REPLACE,new Transform3D(),new Color4f(),TextureAttributes.NICEST));
    BoxAppearance.setPolygonAttributes(new PolygonAttributes(PolygonAttributes.POLYGON_FILL, PolygonAttributes.CULL_FRONT, 0f));
    BoxTG.setTransform(BoxT3D);
    BoxTG.addChild(RotTG);
    RotTG.addChild(new Box(10,2,20,Box.GENERATE_NORMALS_INWARD,BoxAppearance));
    group.addChild(BoxTG);
    universe.getViewingPlatform().setNominalViewingTransform();
    TransformGroup ViewTG;
    Transform3D ViewT3D = new Transform3D();
    ViewTG = universe.getViewingPlatform().getViewPlatformTransform();
    ViewTG.getTransform(ViewT3D);
    ViewT3D.setTranslation(new Vector3f(0,0,5f));
    ViewT3D.setRotation(new AxisAngle4f(0,1,0,(float)Math.toRadians(20)));
    ViewTG.setTransform(ViewT3D);
    KeyBehavior KeyCtrl = new KeyBehavior(universe.getViewingPlatform().getViewPlatformTransform());
    KeyCtrl.setSchedulingBounds(BigBounds);
    group.addChild(KeyCtrl);
    universe.addBranchGraph(group);
  }
  public static void main(String[] args) {
    new DreiD();
  }
}

KeyBehavior:

Code:
import java.awt.*;
import java.awt.event.*;
import javax.media.j3d.*;
import javax.vecmath.*;
import java.util.*;

public class KeyBehavior extends Behavior {
  private TransformGroup transformGroup;
  private Transform3D trans=new Transform3D(),tempTrans=new Transform3D();
  private WakeupCriterion criterion;
  public KeyBehavior(TransformGroup tg) {
    transformGroup=tg;
  }
 public void initialize() {
   criterion=new WakeupOnAWTEvent(KeyEvent.KEY_PRESSED);
   wakeupOn(criterion);
 }
 public void processStimulus(Enumeration criteria) {
   WakeupOnAWTEvent ev;
   AWTEvent AWTEv[];
   KeyEvent KeyEv;
 while (criteria.hasMoreElements()) {
   ev=(WakeupOnAWTEvent)criteria.nextElement();
   AWTEv=ev.getAWTEvent();
   for (int i=0; i<AWTEv.length; i++) {
     KeyEv=(KeyEvent)AWTEv[i];
     transformGroup.getTransform(trans);
     tempTrans.setIdentity();
     if (KeyEv.getKeyCode()==KeyEvent.VK_UP) {
       tempTrans.setTranslation(new Vector3f(0f,0f,-0.2f));
     }
     else if (KeyEv.getKeyCode()==KeyEvent.VK_DOWN) {
       tempTrans.setTranslation(new Vector3f(0f,0f,0.2f));
     }
     else if (KeyEv.getKeyCode()==KeyEvent.VK_LEFT) {
       tempTrans.rotY(Math.toRadians(2));
     }
     else if (KeyEv.getKeyCode()==KeyEvent.VK_RIGHT) {
       tempTrans.rotY(Math.toRadians(-2));
     }
     trans.mul(tempTrans);
     transformGroup.setTransform(trans);
    }
  }
  wakeupOn(criterion);
  }
}

Danke im Vorraus!
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
E JOGL kein zugriff auf manche methoden Spiele- und Multimedia-Programmierung 5
C Kein Weiterkommen - Pacman Spiele- und Multimedia-Programmierung 4
Blender3D VlCJ Windows 10 kein Zugriff auf einen im Netzwerk freigegebnen Ordner Spiele- und Multimedia-Programmierung 2
W Minecraft wie Minidumps aktivierren ? (kein Minecraft) Spiele- und Multimedia-Programmierung 0
G Sound-Sampling: Sinuston; kein Fehler, aber auch kein Ton :-( Spiele- und Multimedia-Programmierung 3
F Kein Sound bei javazoom Spiele- und Multimedia-Programmierung 2
N JMF - CaptureDeviceManager findet kein device Spiele- und Multimedia-Programmierung 2
A JMF kein ton Spiele- und Multimedia-Programmierung 4
C auf einem PC kein mp3 unter Java Spiele- und Multimedia-Programmierung 6
A Kein Bild Spiele- und Multimedia-Programmierung 3
M Hintergrund ist kein Hintergrund. Spiele- und Multimedia-Programmierung 5
T 2d-Spiel Licht Spiele- und Multimedia-Programmierung 5
F LWJGL: Licht und GL_LINES funktioniert nicht Spiele- und Multimedia-Programmierung 6
S JME - Licht hat keinen Effekt Spiele- und Multimedia-Programmierung 2
S Problem mit Sichtfeld/Licht in einem Raster Spiele- und Multimedia-Programmierung 5
S Probleme mit dem Licht und dem KeyListener Spiele- und Multimedia-Programmierung 2
C Shape3D und Licht Spiele- und Multimedia-Programmierung 2
egrath [Java3D] Keine Darstellung trotz Geometrie und Licht Spiele- und Multimedia-Programmierung 6
pcfreak9000 Objekt-Vorlagen Spiele- und Multimedia-Programmierung 0
Arif Maus-Objekt im Player Klasse implementieren !? Spiele- und Multimedia-Programmierung 2
H Objekt der Klasse A in der Klasse B verwenden und manipulieren Spiele- und Multimedia-Programmierung 6
M [JOGL] Maus über einem gezeichnetem Objekt abfragen? Spiele- und Multimedia-Programmierung 5
U Kann nur ein Objekt mit LWJGL rendern Spiele- und Multimedia-Programmierung 2
kaoZ Graphics Objekt liefert null Spiele- und Multimedia-Programmierung 14
E Java3D Objekt skalieren per JSlider/JButton Spiele- und Multimedia-Programmierung 10
D Probleme mit objekt initializirung mit Mouselistener Spiele- und Multimedia-Programmierung 10
S Java3D: Primitives zu einem Objekt kombinieren Spiele- und Multimedia-Programmierung 7
T LWJGL 3D Objekt Collision: Wie? Spiele- und Multimedia-Programmierung 11
S Wie erkennt ein Objekt ein anderes? Spiele- und Multimedia-Programmierung 7
B j3d mehr als ein Objekt rotieren Spiele- und Multimedia-Programmierung 18
G Hindernis vor Objekt erkennen Spiele- und Multimedia-Programmierung 6
W Java3D: Kanten die hinter einem Objekt liegen werden gezeigt Spiele- und Multimedia-Programmierung 2
S Graphics Objekt weiterreichen? Spiele- und Multimedia-Programmierung 4
H Eigenes 3D Objekt Spiele- und Multimedia-Programmierung 20
D 2D Objekt fragmentieren Spiele- und Multimedia-Programmierung 3
V Jogl: Objekt trotz Rotation immer in gleiche Richtung bewegen Spiele- und Multimedia-Programmierung 5
M [J3D]Dynamische Erzeugung vom Objekt Box Spiele- und Multimedia-Programmierung 5
Kr0e OpenGL .. Pixel Buffer Objekt oder Frame Buffer Object? Spiele- und Multimedia-Programmierung 2
B String zu Objekt einer eigenen Klasse casten Spiele- und Multimedia-Programmierung 13
N Objekt entgegengesetzt bewegen Spiele- und Multimedia-Programmierung 8
M BoundingBox ist nicht bündig am Objekt Spiele- und Multimedia-Programmierung 5
K Kanten anzeigen lassen in einem Shape3D-Objekt Spiele- und Multimedia-Programmierung 4
S geladenes Objekt -> Material Zuweisen. Spiele- und Multimedia-Programmierung 4
J Picking Selection auf ein Objekt begrenzen ! Spiele- und Multimedia-Programmierung 6
C Objekt bei Buttonklick zeichnen Spiele- und Multimedia-Programmierung 16
G JOGL: per Mausbewegung Objekt verschieben Spiele- und Multimedia-Programmierung 2
C Objekt zwischen 2 Geraden? Spiele- und Multimedia-Programmierung 3
D 3D Objekt entlang Geraden Spiele- und Multimedia-Programmierung 4
Quaxli Picking: Vom Shape3D zum eigentlichen Objekt Spiele- und Multimedia-Programmierung 2
G Objekt nicht ins negative oder null skalieren Spiele- und Multimedia-Programmierung 2
G Objekt verschieben Spiele- und Multimedia-Programmierung 6
G Textur laden auf ein eingelesenes 3D Objekt Spiele- und Multimedia-Programmierung 4
I ScaleInterpolator verschiebt Objekt immer in den Ursprung. Spiele- und Multimedia-Programmierung 2
V Objekt per Tastendruck anzeigen/verschwinden lassen? Spiele- und Multimedia-Programmierung 4
R Objekt mit cos/sin verschieben Spiele- und Multimedia-Programmierung 27
K Ein 3D-Objekt mit Maus auswählen Spiele- und Multimedia-Programmierung 5
D Alpha Objekt Spiele- und Multimedia-Programmierung 8
H Kompliziertes 3D-Objekt Spiele- und Multimedia-Programmierung 16
G Einen gif oder jpg Datei aus einem Graphics Objekt o. JFrame Spiele- und Multimedia-Programmierung 2
C Wie kann ich ein Objekt auf Tastendruck vor & zurück bew Spiele- und Multimedia-Programmierung 3
M Position der ViewingPlatform als Point3d-Objekt? Spiele- und Multimedia-Programmierung 12
S 3D Objekt erstellen und darstellen Spiele- und Multimedia-Programmierung 4
G RotationInterp. setzt Objekt an Ursprungsposition zurück Spiele- und Multimedia-Programmierung 2
N Shape3D Objekt auf dem Bildschirm zentrieren Spiele- und Multimedia-Programmierung 2

Ähnliche Java Themen

Neue Themen


Oben