import java.util.ArrayList; import java.util.List; import com.jme.app.SimpleGame; import com.jme.bounding.BoundingBox; import com.jme.image.Texture; import com.jme.math.FastMath; import com.jme.math.Vector3f; import com.jme.renderer.ColorRGBA; import com.jme.scene.Line; import com.jme.scene.shape.Sphere; import com.jme.scene.state.TextureState; import com.jme.util.TextureManager; public class EspagueteComNo extends SimpleGame { public static void main(String[] args) { EspagueteComNo app = new EspagueteComNo(); app.setConfigShowMode(ConfigShowMode.AlwaysShow); app.start(); } @Override protected void simpleInitGame() { int i = 1; float angulo = 0; List esferas = new ArrayList(); display.getRenderer().setBackgroundColor(ColorRGBA.white); TextureState ts1 = display.getRenderer().createTextureState(); ts1.setEnabled(true); ts1.setTexture(TextureManager.loadTexture(Espaguete.class.getResource("textura_verde.PNG"), Texture.MinificationFilter.Trilinear, Texture.MagnificationFilter.Bilinear)); TextureState ts2 = display.getRenderer().createTextureState(); ts2.setEnabled(true); ts2.setTexture(TextureManager.loadTexture(Espaguete.class.getResource("textura_azul.PNG"), Texture.MinificationFilter.Trilinear, Texture.MagnificationFilter.Bilinear)); Sphere esferaCentral = new Sphere("EsferaCentral", new Vector3f(0, 0, -30), 20, 20, 2f); esferaCentral.setModelBound(new BoundingBox()); esferaCentral.updateModelBound(); esferaCentral.setRenderState(ts1); rootNode.attachChild(esferaCentral); while (angulo <= 360) { float x = (float) Math.sin(angulo * FastMath.DEG_TO_RAD) * 20; float y = (float) Math.cos(angulo * FastMath.DEG_TO_RAD) * 20; Vector3f center = new Vector3f(x, y, -32); Sphere esfera = new Sphere("Esfera" + (++i), center, 20, 20, 1.5f); esfera.setModelBound(new BoundingBox()); esfera.updateModelBound(); esfera.setRenderState(ts2); rootNode.attachChild(esfera); angulo += (360 / 10); esferas.add(esfera); } i = 1; Vector3f posCentral = esferaCentral.getCenter(); for (Sphere esfera : esferas) { Vector3f pos = esfera.getCenter(); Line linha = new Line("Linha" + i++, new Vector3f[] { posCentral, pos }, new Vector3f[] { posCentral, pos }, new ColorRGBA[] { ColorRGBA.red, ColorRGBA.red }, null); linha.setMode(Line.Mode.Segments); linha.setLineWidth(1f); rootNode.attachChild(linha); } rootNode.getLocalRotation().fromAngleNormalAxis(-45f, Vector3f.UNIT_X); rootNode.getLocalTranslation().setY(30f); rootNode.getLocalTranslation().setZ(-10f); } }