[Gvsig_desarrolladores] OSGVP: Usar un jpg como suelo de un
planeta
Maria Arias de Reyna
marias en emergya.es
Vie Ene 23 11:14:01 CET 2009
El Jueves 22 Enero 2009 13:24, Maria Arias de Reyna escribió:
> Sigo experimentando con OSG Virtual Planet y estoy buscando la forma de
> poner un jpg como el suelo de un planeta. Estoy usando un planeta con un
> sistema de coordenadas proyectadas (Planet.CoordinateSystemType.PROJECTED).
> ¿Sería posible hacerlo? El jpg estaría georreferenciado, por supuesto.
Bueno, no fui capaz de añadir una textura al planeta, pero como está
proyectado y por tanto es plano, poniendo un poligono con la imagen justo
encima se hace el apaño. Cogiendo de base el ejemplo de la vaca en el polo
norte y mezclandolo con el de los polígonos con la imagen de la tierra:
Rectangle2D extent = earth.getExtent();
double xmin = extent.getMinX();
double xmax = extent.getMaxX();
double ymin = extent.getMinY();
double ymax = extent.getMaxY();
Group g = new Group();
Vec4 color = new Vec4(1.0, 1.0, 1.0, 1.0);
AutoTransform at;
try {
at = new AutoTransform();
TessellablePolygon _rect1 = new TessellablePolygon();
_rect1.addVertex(new Vec3(xmax, ymax, 0.01), color);
_rect1.addVertex(new Vec3(xmax, ymin, 0.01), color);
_rect1.addVertex(new Vec3(xmin, ymin, 0.01), color);
_rect1.addVertex(new Vec3(xmin, ymax, 0.01), color);
_rect1
.setNormalBinding(GeometryFeature.AttributeBinding.BIND_PER_VERTEX);
File texture = Util.extractFromURL(Main.class.getResource(
"/earth.gif");
_rect1.setTexture(texture.getPath());
_rect1.setEnabledBlending(true);
Material m = new Material();
m.setColorMode(Material.ColorMode.SPECULAR);
m.setSpecular(Material.Face.FRONT_AND_BACK, new Vec4(0.0, 1, 0.0,
1.0));
m.setTransparency(Material.Face.FRONT_AND_BACK, 0.8f);
_rect1.getOrCreateStateSet().setMaterial(m, Node.Mode.ON);
at.addChild(_rect1);
g.addChild(at);
--
María Arias de Reyna Domínguez
Emergya Consultoría
Más información sobre la lista de distribución gvSIG_desarrolladores