Sphere and Dome are two built-in mesh shapes.
![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi0P6jffrwckmX4I6vB4Orh6MnJ98d_m7bRzTIu7LADOutJxSGYYei6o-t_0kPbY2Z5V_gM6eUkGd62u5W3_2BQvwF6XTlpdkM2uENMLCAKxJs7bgjKeRkTEIrOJkgOlLGG3XJypYjMql7L/s1600/java37+-+1.png)
One Sphere and two Dome objects are created with constructors setting number of mesh divisions and radius. The Geometry has to be created.
![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiHAB370nmXoIi8NiL4wvuJzjmkWi8E98eSPDIeKyE1Jn2Blb2oVVgemQ0EYf0JlQjBPjatru93Lo1sVQTsIN7xW5rM0Tr2PrjhSj2P_s4LloeD3rHMlU-wZCn-UZ5xY-_Ib318PNzQq83b/s1600/java37+-+2.png)
// *** 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.
![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhnqqrUR4aYo9xxcgZ4UpdugV80X2IR2HjmoBB4aPuKqzr8Alfgi5Uj3QFLw27t7tYFHKd4Sqy7qeiIaBQmFpGPppe2lHEJr7uXP9lM8T61w9EA5-Dtf63Vp7X4MSO53J1SRxDLuLdwZ-3p/s1600/java37+-+3.png)
// *** 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.
![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiTAfHy1KwSyfimXOTQXA1Ib4ROLMXybxzcQk80MgL_7H30caLWqY8v_OYGhRHfB9-xpSzPC66fR5I4aeDvRhxRWN_soa6b8zq55BPga_blTUG8ZIjzJbu8e9HhE6Br3tepDAe3BiSb6-cp/s1600/java37+-+4.png)
// *** 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