List of usage examples for com.badlogic.gdx.graphics.g3d.utils ModelBuilder node
Node node
To view the source code for com.badlogic.gdx.graphics.g3d.utils ModelBuilder node.
Click Source Link
From source file:com.github.fauu.helix.game.Game.java
License:Open Source License
@Override public void create() { camera = new Camera(new Vector3(32, 32, 0)); cameraInputController = new CameraInputController(camera); // Gdx.input.setInputProcessor(cameraInputController); assets = new AssetManager(); assets.setLoader(GeometrySet.class, new GeometrySetLoader(new InternalFileHandleResolver())); assets.setLoader(MapRegion.class, new MapRegionLoader(new InternalFileHandleResolver())); assets.load("assets/mapregions/0.hmr", MapRegion.class); assets.finishLoading();/*from ww w . ja va 2s. com*/ mapRegion = assets.get("assets/mapregions/0.hmr", MapRegion.class); spriteBatch = new SpriteBatch(); renderer = new Renderer(); player = new Player(new Vector2(8, 17), new Texture(Gdx.files.internal("assets/sprites/player.png"))); camera.move(player.getRealPosition()); final ModelBuilder modelBuilder = new ModelBuilder(); waterTexture = new Texture("assets/textures/water.png"); final MeshPartBuilder.VertexInfo corner00 = new MeshPartBuilder.VertexInfo(); corner00.hasPosition = true; corner00.hasNormal = true; corner00.hasUV = true; corner00.setPos(0, 0, 0); corner00.setNor(0, 1, 0); corner00.setUV(0, 0); final MeshPartBuilder.VertexInfo corner10 = new MeshPartBuilder.VertexInfo(); corner10.hasPosition = true; corner10.hasNormal = true; corner10.hasUV = true; corner10.setPos(4, 0, 0); corner10.setNor(0, 1, 0); corner10.setUV(0, 1); final MeshPartBuilder.VertexInfo corner11 = new MeshPartBuilder.VertexInfo(); corner11.hasPosition = true; corner11.hasNormal = true; corner11.hasUV = true; corner11.setPos(4, 0, 14); corner11.setNor(0, 1, 0); corner11.setUV(1, 1); final MeshPartBuilder.VertexInfo corner01 = new MeshPartBuilder.VertexInfo(); corner01.hasPosition = true; corner01.hasNormal = true; corner01.hasUV = true; corner01.setPos(0, 0, 14); corner01.setNor(0, 1, 0); corner01.setUV(1, 0); modelBuilder.begin(); modelBuilder.node(); MeshPartBuilder meshPartBuilder = modelBuilder.part("water1", GL20.GL_TRIANGLES, VertexAttributes.Usage.Position | VertexAttributes.Usage.TextureCoordinates, new Material(TextureAttribute.createDiffuse(waterTexture), ColorAttribute.createDiffuse(Color.WHITE), new BlendingAttribute(GL20.GL_SRC_ALPHA, GL20.GL_ONE_MINUS_SRC_ALPHA))); meshPartBuilder.rect(corner00, corner10, corner11, corner01); waterModel = modelBuilder.end(); waterModelInstance = new ModelInstance(waterModel); WaterData waterData = new WaterData(); waterData.waveAmplitude = 0.02f; waterData.waveAngle = 0; waterData.waveFrequency = 0.5f; waterModelInstance.userData = waterData; // waterModelInstance.userData = new float[2]; // ((float[]) waterModelInstance.userData)[0] = 0; // waveAngle // ((float[]) waterModelInstance.userData)[1] = 0.1f; // waveAmplitude waterModelInstance.transform.translate(8, -0.1f, 19).rotate(0, 1, 0, -90).scale(1, 1, -1); // ((float[]) waterModelInstance.userData)[2] = 8; // startX // ((float[]) waterModelInstance.userData)[3] = 7; // sizeX // ((float[]) waterModelInstance.userData)[4] = 19; // startZ // ((float[]) waterModelInstance.userData)[5] = 5; // sizeZ }
From source file:com.mbrlabs.mundus.editor.utils.UsefulMeshs.java
License:Apache License
public static Model createArrowStub(Material mat, Vector3 from, Vector3 to) { ModelBuilder modelBuilder = new ModelBuilder(); modelBuilder.begin();/*w w w . j av a 2 s.c om*/ MeshPartBuilder meshBuilder; // line meshBuilder = modelBuilder.part("line", GL20.GL_LINES, VertexAttributes.Usage.Position | VertexAttributes.Usage.ColorUnpacked, mat); meshBuilder.line(from.x, from.y, from.z, to.x, to.y, to.z); // stub Node node = modelBuilder.node(); node.translation.set(to.x, to.y, to.z); meshBuilder = modelBuilder.part("stub", GL20.GL_TRIANGLES, Usage.Position | Usage.Normal, mat); BoxShapeBuilder.build(meshBuilder, 2, 2, 2); return modelBuilder.end(); }
From source file:com.mygdx.game.utilities.ModelFactory.java
License:Apache License
public static Model buildCompassModel() { float compassScale = 5; ModelBuilder modelBuilder = new ModelBuilder(); Model arrow = modelBuilder.createArrow(Vector3.Zero, Vector3.Y.cpy().scl(compassScale), null, VertexAttributes.Usage.Position | VertexAttributes.Usage.Normal); modelBuilder.begin();/*from w ww . j av a 2 s . com*/ Mesh zArrow = arrow.meshes.first().copy(false); zArrow.transform(new Matrix4().rotate(Vector3.X, 90)); modelBuilder.part("part1", zArrow, GL20.GL_TRIANGLES, new Material(ColorAttribute.createDiffuse(Color.BLUE))); modelBuilder.node(); Mesh yArrow = arrow.meshes.first().copy(false); modelBuilder.part("part2", yArrow, GL20.GL_TRIANGLES, new Material(ColorAttribute.createDiffuse(Color.GREEN))); modelBuilder.node(); Mesh xArrow = arrow.meshes.first().copy(false); xArrow.transform(new Matrix4().rotate(Vector3.Z, -90)); modelBuilder.part("part3", xArrow, GL20.GL_TRIANGLES, new Material(ColorAttribute.createDiffuse(Color.RED))); arrow.dispose(); return modelBuilder.end(); }
From source file:org.ah.gcode.preview.gcode.Layer.java
License:Open Source License
protected Mesh process(List<GCodeMovement> movements, int verticeElements, int indiceElements, int meshNo, ModelBuilder modelBuilder, Material material, float layerHeight) { MeshDetails meshDetails = new MeshDetails(verticeElements, indiceElements, meshNo); Mesh mesh = new Mesh(true, verticeElements, indiceElements, VertexAttribute.Position(), VertexAttribute.ColorUnpacked(), VertexAttribute.Normal(), VertexAttribute.TexCoords(0)); int vi = 0;/*from ww w. j a v a2s. com*/ int ii = 0; GCodeMovement previousMovement = null; for (GCodeMovement movement : movements) { movement.process(nextOrdinaryNumber, meshDetails, layerHeight, previousMovement); if (movement.isExtrude()) { previousMovement = movement; } else { previousMovement = null; } nextOrdinaryNumber = nextOrdinaryNumber + 1; vi = vi + movement.getVerticeElementsPerSegment(); ii = ii + movement.getIndiceElementsPerSegment(); } mesh.setVertices(meshDetails.vertices); mesh.setIndices(meshDetails.indices); Node node = modelBuilder.node(); node.id = Integer.toString(meshNo); modelBuilder.part(Integer.toString(meshNo), mesh, GL20.GL_TRIANGLES, material); return mesh; }
From source file:org.ah.gcode.preview.utils.ModelBuilders.java
License:Open Source License
public static void createTorus3(ModelBuilder modelBuilder, Material material, float zDiameter, float xDiameter, int zSections, int xSections, int bones) { float zAngle = FULL_CIRCLE / zSections; float xAngle = FULL_CIRCLE / xSections; float boneAngle = FULL_CIRCLE / bones; Mesh mesh = new Mesh(true, (zSections + 1) * (xSections + 1), zSections * xSections * 6, VertexAttribute.Position(), VertexAttribute.ColorUnpacked(), VertexAttribute.Normal(), VertexAttribute.TexCoords(0), VertexAttribute.BoneWeight(0), VertexAttribute.BoneWeight(1)); float[] vertices = new float[(zSections + 1) * (xSections + 1) * 16]; int bone1Index = 0; int bone2Index = 0; float bone1Weight = 0.0f; float bone2Weight = 0.0f; float zSectionToBoneRatio = (float) (zSections + 1) / (float) bones; float zSectionAngle = 0.0f; float zSectionWeight = 0.0f; for (int i = 0; i < zSections + 1; i++) { bone1Index = (int) (i / zSectionToBoneRatio); if (bone1Index >= bones) { throw new IllegalStateException(); }// w w w. j av a 2 s . c o m bone2Index = bone1Index + 1; if (bone2Index >= bones) { bone2Index = 0; } zSectionAngle = i * zAngle - bone1Index * boneAngle; if (zSectionAngle > FULL_CIRCLE) { zSectionAngle = zSectionAngle - FULL_CIRCLE; } zSectionWeight = zSectionAngle / boneAngle; bone1Weight = 1 - zSectionWeight; bone2Weight = zSectionWeight; for (int j = 0; j < xSections + 1; j++) { int v = (j * (zSections + 1) * 16) + i * 16; createTorusVertice3(zDiameter, xDiameter, zSections, xSections, zAngle, xAngle, vertices, j, i, v, bone1Index, bone1Weight, bone2Index, bone2Weight); } } mesh.setVertices(vertices); short[] indices = new short[zSections * xSections * 6]; createTorusIndices2(zSections, xSections, indices); mesh.setIndices(indices); Node node = modelBuilder.node(); node.id = "torus"; modelBuilder.part("torus", mesh, GL20.GL_TRIANGLES, material); Matrix4[] boneMatrixes = new Matrix4[bones]; for (int i = 0; i < boneMatrixes.length; i++) { boneMatrixes[i] = new Matrix4().idt(); } Array<NodePart> parts = node.parts; Object[] items = parts.items; NodePart item = (NodePart) items[0]; item.bones = boneMatrixes; //node.parts.items[0].bones = boneMatrixes; }