Sphere and Dome are two built-in mesh shapes.
One Sphere and two Dome objects are created with constructors setting number of mesh divisions and radius. The Geometry has to be created.
// *** 1. Start (Sphere, Dome1, Dome2) Sphere sphere = new Sphere(16,16,1); Geometry geoSphere = new Geometry("sphere", sphere); Dome dome1 = new Dome(new Vector3f(2,0,0),16,16,1); Geometry geoDome1 = new Geometry("dome1", dome1); Dome dome2 = new Dome(new Vector3f(-2,0,0),16,16,1); Geometry geoDome2 = new Geometry("dome2", dome2); geoDome2.rotate(FastMath.PI,0,0); // *** 1. End
We print the number of vertex points in each structure.
// *** 2. Start (Number of Vertex Points) System.out.println("The sphere has " + sphere.getVertexCount() + " vertices."); System.out.println("The dome1 has " + dome1.getVertexCount() + " vertices."); System.out.println("The dome2 has " + dome2.getVertexCount() + " vertices."); // *** 2. End
The three Geometries are set as blue, red or green.
// *** 3. Start (Materials - Blue, Red, Green) Material mat = new Material(assetManager, "Common/MatDefs/Light/Lighting.j3md"); mat.setBoolean("UseMaterialColors",true); mat.setColor("Diffuse",ColorRGBA.Blue); mat.setColor("Specular",ColorRGBA.White); geoSphere.setMaterial(mat); Material mat1 = new Material(assetManager, "Common/MatDefs/Light/Lighting.j3md"); mat1.setBoolean("UseMaterialColors",true); mat1.setColor("Diffuse",ColorRGBA.Red); mat1.setColor("Specular",ColorRGBA.White); geoDome1.setMaterial(mat1); Material mat2 = new Material(assetManager, "Common/MatDefs/Light/Lighting.j3md"); mat2.setBoolean("UseMaterialColors",true); mat2.setColor("Diffuse",ColorRGBA.Green); mat2.setColor("Specular",ColorRGBA.White); geoDome2.setMaterial(mat2); // *** 3. End
// JMonkey37.java package mygame; import com.jme3.app.SimpleApplication; import com.jme3.light.SpotLight; import com.jme3.material.Material; import com.jme3.math.ColorRGBA; import com.jme3.math.FastMath; import com.jme3.math.Vector3f; import com.jme3.renderer.RenderManager; import com.jme3.scene.Geometry; import com.jme3.scene.shape.Dome; import com.jme3.scene.shape.Sphere; public class JMonkey37 extends SimpleApplication { public static void main(String[] args) { JMonkey37 app = new JMonkey37(); app.start(); } @Override public void simpleInitApp() { flyCam.setEnabled(false); viewPort.setBackgroundColor(ColorRGBA.White); setDisplayFps(false); setDisplayStatView(false); // *** 1. Start (Sphere, Dome1, Dome2) Sphere sphere = new Sphere(16,16,1); Geometry geoSphere = new Geometry("sphere", sphere); Dome dome1 = new Dome(new Vector3f(2,0,0),16,16,1); Geometry geoDome1 = new Geometry("dome1", dome1); Dome dome2 = new Dome(new Vector3f(-2,0,0),16,16,1); Geometry geoDome2 = new Geometry("dome2", dome2); geoDome2.rotate(FastMath.PI,0,0); // *** 1. End // *** 2. Start (Number of Vertex Points) System.out.println("The sphere has " + sphere.getVertexCount() + " vertices."); System.out.println("The dome1 has " + dome1.getVertexCount() + " vertices."); System.out.println("The dome2 has " + dome2.getVertexCount() + " vertices."); // *** 2. End // *** 3. Start (Materials - Blue, Red, Green) Material mat = new Material(assetManager, "Common/MatDefs/Light/Lighting.j3md"); mat.setBoolean("UseMaterialColors",true); mat.setColor("Diffuse",ColorRGBA.Blue); mat.setColor("Specular",ColorRGBA.White); geoSphere.setMaterial(mat); Material mat1 = new Material(assetManager, "Common/MatDefs/Light/Lighting.j3md"); mat1.setBoolean("UseMaterialColors",true); mat1.setColor("Diffuse",ColorRGBA.Red); mat1.setColor("Specular",ColorRGBA.White); geoDome1.setMaterial(mat1); Material mat2 = new Material(assetManager, "Common/MatDefs/Light/Lighting.j3md"); mat2.setBoolean("UseMaterialColors",true); mat2.setColor("Diffuse",ColorRGBA.Green); mat2.setColor("Specular",ColorRGBA.White); geoDome2.setMaterial(mat2); // *** 3. End /** A cone-shaped spotlight with location, direction, range */ SpotLight spot = new SpotLight(); spot = new SpotLight(); spot.setSpotRange(100); spot.setSpotOuterAngle(20 * FastMath.DEG_TO_RAD); spot.setSpotInnerAngle(15 * FastMath.DEG_TO_RAD); spot.setDirection(cam.getDirection()); spot.setPosition(cam.getLocation()); rootNode.addLight(spot); rootNode.attachChild(geoSphere); rootNode.attachChild(geoDome1); rootNode.attachChild(geoDome2); } @Override public void simpleUpdate(float tpf) { rootNode.rotate(2*tpf,tpf,2*tpf); } @Override public void simpleRender(RenderManager rm) { } }
Output:
No comments:
Post a Comment