Java3d - Camera bereik / Sphere texturing

Pagina: 1
Acties:

  • Tim Schuhmacher
  • Registratie: Januari 2000
  • Laatst online: 09-09 15:04
Ik heb 2 vragen mbt Java3d. Ik wil graag lucht / wolken maken. De bedoeling is om een bol met een texture te beplakken.
Zo komt er wel een texture aan de binnenkant van mn bol, maar niet op de plaats zoals ik het wil.
code:
1
2
3
4
5
6
7
8
Sphere Lucht(float straal){
 Appearance a = new Appearance();
 Texture2D lucht = Algemeen.laadTexture("lucht.jpg");
 return new Sphere(straal,
             Primitive.GENERATE_TEXTURE_COORDS |
             Primitive.GENERATE_NORMALS_INWARD,
             a);
}

Nu heb ik de volgende 2 regels toegevoegd, maar nu wordt de texture niet meer weergegeven.
code:
1
2
3
4
5
 TexCoordGeneration tcg = 
    new TexCoordGeneration
    (TexCoordGeneration.SPHERE_MAP,
     TexCoordGeneration.TEXTURE_COORDINATE_3);
 a.setTexCoordGeneration(tcg);

Heeft iemand een tip.

En als ik met de camera helemaal aan 1 kant van de binnen kant van de bol sta, dan zie ik de overkant niet. Met andere woorden de camera 'kijkt' / rendert maar tot een bepaalde afstand. Kan dit uitgebreidt worden?

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 09-09 22:48

.oisyn

Moderator Devschuur®

Demotivational Speaker

nou heb ik (nog) niet zoveel verstand van de java3d api, maar geeft die TexCoordGeneration.TEXTURE_COORDINATE_3 aan hoeveel dimensies er gegenereerd moeten worden? Zo ja, maak hier dan eens een 2 van

Het andere probleem heeft te maken met het feit dat de farplane te dicht bij staat ingesteld... Die moet je dus wat verder weg zetten, zodat de polygonen van de bol niet geclipped worden. De far plane moet zich dus minstens 2x de straal van je af bevinden

Overigens is het voor skydomes gebruikelijk dat de camera zich altijd precies in het centrum bevindt, zodat het echt lijkt dat de wolken zich ver weg bevinden, en dus heb je ook niet het idee dat je tegen de grenzen aan loopt

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


  • Tim Schuhmacher
  • Registratie: Januari 2000
  • Laatst online: 09-09 15:04
Op donderdag 18 april 2002 18:45 schreef .oisyn het volgende:
TexCoordGeneration.TEXTURE_COORDINATE_2
Dit had ik vergeten te noemen; ik had dat namelijk ook geprobeerd en dat leverde niets op.
farplane
Bedoel jij daar dit mee?
"javax.media.j3d.Clip, The Clip leaf node defines the back, or far, clip distance in the virtual universe"
Overigens is het voor skydomes gebruikelijk dat de camera zich altijd precies in het centrum bevindt, zodat het echt lijkt dat de wolken zich ver weg bevinden, en dus heb je ook niet het idee dat je tegen de grenzen aan loopt
Dat is inderdaad een slimme oplossing, maar hoe bereik je dit?

Navigeren en de lucht gebeurt nu zo:
TransformGroup vpTrans =
SimpleUniverse.getViewingPlatform().getViewPlatformTransform();
KeyNavigatorBehavior keyNavBeh = new KeyNavigatorBehavior(vpTrans);
keyNavBeh.setSchedulingBounds(new BoundingSphere(new Point3d(),1000.0));
objRoot.addChild(keyNavBeh);

&

objRoot.addChild(new Lucht());
'new Lucht()' levert een transformgroup op met de Sphere eraan.

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 09-09 22:48

.oisyn

Moderator Devschuur®

Demotivational Speaker

Op donderdag 18 april 2002 20:06 schreef Tim Schuhmacher het volgende:

[.. knip ..]

Bedoel jij daar dit mee?
"javax.media.j3d.Clip, The Clip leaf node defines the back, or far, clip distance in the virtual universe"
yup
Dat is inderdaad een slimme oplossing, maar hoe bereik je dit?
2 manieren. 1 is ervoor zorgen dat de cameramatrix geen translaties bevat als je de skydome gaat tekenen, en de ander is de skydome verplaatsen aan de hand van de camera (dus als de camera 10 units vooruit beweegt, dan moet de skydome ook 10 units vooruit bewegen).

De eerste manier is geloof ik in Java3D niet echt te doen, omdat je niet op polygoonlevel werkt, maar zoals ik al zei, ik ken de Java3D API nog niet (vanaf morgen gaan we er echter mee werken op school, dus misschien dat ik binnenkort betere antwoorden kan geven)

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.