[Java3D] Surface
Le
FireWave
Bonjour à tous,
Je patoge :(
J'ai une matrice que j'aimerai afficher en 3D
- Colonnes en abscisse
- Lignes en ordonnée
- Valeur en hauteur
Cette matrice fait minimum 100*100
Please, help me.. Avez vous des pistes ??
Je me suis tourné vers les QuadArray.
J'ai créé une classe Vertex qui me est en fait un carré.
Probleme, non seulement ça ne s'affiche pas.. mais en plus il me fait un
Out of Memory dès quand je suis avec 300*300 vertex
Je mets mon code en dessous..
Merci de votre aide !
FireWave
////////////////////////////////////////////////////////////////////////
import javax.media.j3d.*;
import javax.vecmath.*;
import java.awt.Color;
public class Vertex extends Shape3D {
public Vertex(Point3f points[]) {
int nbPoints = 4;
QuadArray quad = new QuadArray(nbPoints, QuadArray.COORDINATES
| QuadArray.COLOR_3);
Color3f color = new Color3f(Color.red);
quad.setCoordinates(0, points);
this.setGeometry(quad);
quad.setColors(0, new Color3f[] { color, color, color, color });
}
}
////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////
import com.sun.j3d.utils.universe.*;
import javax.media.j3d.*;
import javax.vecmath.*;
public class Dessin {
public Dessin(int[][] matrice, int TAILLE)
{
SimpleUniverse universe = new SimpleUniverse();
BranchGroup group = new BranchGroup();
for (int i = 0; i < TAILLE - 1; i++)
for (int j = 0; j < TAILLE - 1; j++) {
Point3f p1 = new Point3f(i / TAILLE, j / TAILLE, matrice[i][j]);
Point3f p2 = new Point3f(i / TAILLE, j / TAILLE,
matrice[i + 1][j]);
Point3f p3 = new Point3f(i / TAILLE, j / TAILLE,
matrice[i + 1][j + 1]);
Point3f p4 = new Point3f(i / TAILLE, j / TAILLE,
matrice[i][j + 1]);
Vertex vert = new Vertex(new Point3f[] { p1, p2, p3, p4 });
group.addChild(vert);
}
universe.getViewingPlatform().setNominalViewingTransform();
universe.addBranchGraph(group);
}
}
////////////////////////////////////////////////////////////////////////
Je patoge :(
J'ai une matrice que j'aimerai afficher en 3D
- Colonnes en abscisse
- Lignes en ordonnée
- Valeur en hauteur
Cette matrice fait minimum 100*100
Please, help me.. Avez vous des pistes ??
Je me suis tourné vers les QuadArray.
J'ai créé une classe Vertex qui me est en fait un carré.
Probleme, non seulement ça ne s'affiche pas.. mais en plus il me fait un
Out of Memory dès quand je suis avec 300*300 vertex
Je mets mon code en dessous..
Merci de votre aide !
FireWave
////////////////////////////////////////////////////////////////////////
import javax.media.j3d.*;
import javax.vecmath.*;
import java.awt.Color;
public class Vertex extends Shape3D {
public Vertex(Point3f points[]) {
int nbPoints = 4;
QuadArray quad = new QuadArray(nbPoints, QuadArray.COORDINATES
| QuadArray.COLOR_3);
Color3f color = new Color3f(Color.red);
quad.setCoordinates(0, points);
this.setGeometry(quad);
quad.setColors(0, new Color3f[] { color, color, color, color });
}
}
////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////
import com.sun.j3d.utils.universe.*;
import javax.media.j3d.*;
import javax.vecmath.*;
public class Dessin {
public Dessin(int[][] matrice, int TAILLE)
{
SimpleUniverse universe = new SimpleUniverse();
BranchGroup group = new BranchGroup();
for (int i = 0; i < TAILLE - 1; i++)
for (int j = 0; j < TAILLE - 1; j++) {
Point3f p1 = new Point3f(i / TAILLE, j / TAILLE, matrice[i][j]);
Point3f p2 = new Point3f(i / TAILLE, j / TAILLE,
matrice[i + 1][j]);
Point3f p3 = new Point3f(i / TAILLE, j / TAILLE,
matrice[i + 1][j + 1]);
Point3f p4 = new Point3f(i / TAILLE, j / TAILLE,
matrice[i][j + 1]);
Vertex vert = new Vertex(new Point3f[] { p1, p2, p3, p4 });
group.addChild(vert);
}
universe.getViewingPlatform().setNominalViewingTransform();
universe.addBranchGraph(group);
}
}
////////////////////////////////////////////////////////////////////////

Poser une question


Bon, maintenant que j'ai ma surface, je l'ai mise de coté, mais il n'y a
aucun effet sur la couleur (que du rouge.. je pensais quand meme qu'il y
aurait un dégradé :(...
Faut-il ajouter une source lumineuse ?
Merci
FireWave
Oui bien sur, sans source lumineuse, les polygones sont rendus avec leur
couleur d'origine.