private void addNormal(final Md2GlCommand cmd, final Md2Frame frame, final int normalIndex, final FloatBufferData norms) { final int index = cmd.vertIndices[normalIndex]; final byte[] vertData = frame.vertData; Md2Normals.getNormalVector(vertData[index * 4 + 3], calcVert); norms.getBuffer().put(calcVert.getXf()).put(calcVert.getYf()).put(calcVert.getZf()); }
verts.put(vert3.getXf()).put(vert3.getYf()).put(vert3.getZf()); verts.put(vert2.getXf()).put(vert2.getYf()).put(vert2.getZf()); verts.put(vert1.getXf()).put(vert1.getYf()).put(vert1.getZf()); verts.put(vert0.getXf()).put(vert0.getYf()).put(vert0.getZf()); verts.put(vert0.getXf()).put(vert0.getYf()).put(vert0.getZf()); verts.put(vert1.getXf()).put(vert1.getYf()).put(vert1.getZf()); verts.put(peak.getXf()).put(peak.getYf()).put(peak.getZf()); verts.put(vert1.getXf()).put(vert1.getYf()).put(vert1.getZf()); verts.put(vert2.getXf()).put(vert2.getYf()).put(vert2.getZf()); verts.put(peak.getXf()).put(peak.getYf()).put(peak.getZf()); verts.put(vert2.getXf()).put(vert2.getYf()).put(vert2.getZf()); verts.put(vert3.getXf()).put(vert3.getYf()).put(vert3.getZf()); verts.put(peak.getXf()).put(peak.getYf()).put(peak.getZf()); verts.put(vert3.getXf()).put(vert3.getYf()).put(vert3.getZf()); verts.put(vert0.getXf()).put(vert0.getYf()).put(vert0.getZf()); verts.put(peak.getXf()).put(peak.getYf()).put(peak.getZf());
/** * * <code>setVertexData</code> sets the vertex positions that define the box. These eight points are determined from * the minimum and maximum point. * */ private void setVertexData() { _meshData.setVertexBuffer(BufferUtils.createVector3Buffer(_meshData.getVertexBuffer(), 8)); final Vector3[] vert = computeVertices(); // returns 8 _meshData.getVertexBuffer().clear(); _meshData.getVertexBuffer().put(vert[0].getXf()).put(vert[0].getYf()).put(vert[0].getZf()); _meshData.getVertexBuffer().put(vert[1].getXf()).put(vert[1].getYf()).put(vert[1].getZf()); _meshData.getVertexBuffer().put(vert[2].getXf()).put(vert[2].getYf()).put(vert[2].getZf()); _meshData.getVertexBuffer().put(vert[3].getXf()).put(vert[3].getYf()).put(vert[3].getZf()); _meshData.getVertexBuffer().put(vert[4].getXf()).put(vert[4].getYf()).put(vert[4].getZf()); _meshData.getVertexBuffer().put(vert[5].getXf()).put(vert[5].getYf()).put(vert[5].getZf()); _meshData.getVertexBuffer().put(vert[6].getXf()).put(vert[6].getYf()).put(vert[6].getZf()); _meshData.getVertexBuffer().put(vert[7].getXf()).put(vert[7].getYf()).put(vert[7].getZf()); }
private void addVert(final Md2GlCommand cmd, final Md2Frame frame, final int vertIndex, final FloatBufferData verts) { final int index = cmd.vertIndices[vertIndex]; final byte[] vertData = frame.vertData; calcVert.set(vertData[index * 4 + 0] & 0xFF, vertData[index * 4 + 1] & 0xFF, vertData[index * 4 + 2] & 0xFF); calcVert.multiplyLocal(frame.scale).addLocal(frame.translate); verts.getBuffer().put(calcVert.getXf()).put(calcVert.getYf()).put(calcVert.getZf()); }
verts.put(vert3.getXf()).put(vert3.getYf()).put(vert3.getZf()); verts.put(vert2.getXf()).put(vert2.getYf()).put(vert2.getZf()); verts.put(vert1.getXf()).put(vert1.getYf()).put(vert1.getZf()); verts.put(vert0.getXf()).put(vert0.getYf()).put(vert0.getZf()); verts.put(vert0.getXf()).put(vert0.getYf()).put(vert0.getZf()); verts.put(vert1.getXf()).put(vert1.getYf()).put(vert1.getZf()); verts.put(peak.getXf()).put(peak.getYf()).put(peak.getZf()); verts.put(vert1.getXf()).put(vert1.getYf()).put(vert1.getZf()); verts.put(vert2.getXf()).put(vert2.getYf()).put(vert2.getZf()); verts.put(peak.getXf()).put(peak.getYf()).put(peak.getZf()); verts.put(vert2.getXf()).put(vert2.getYf()).put(vert2.getZf()); verts.put(vert3.getXf()).put(vert3.getYf()).put(vert3.getZf()); verts.put(peak.getXf()).put(peak.getYf()).put(peak.getZf()); verts.put(vert3.getXf()).put(vert3.getYf()).put(vert3.getZf()); verts.put(vert0.getXf()).put(vert0.getYf()).put(vert0.getZf()); verts.put(peak.getXf()).put(peak.getYf()).put(peak.getZf());
/** * * <code>setVertexData</code> sets the vertex positions that define the box. These eight points are determined from * the minimum and maximum point. * */ private void setVertexData() { _meshData.setVertexBuffer(BufferUtils.createVector3Buffer(_meshData.getVertexBuffer(), 8)); final Vector3[] vert = computeVertices(); // returns 8 _meshData.getVertexBuffer().clear(); _meshData.getVertexBuffer().put(vert[0].getXf()).put(vert[0].getYf()).put(vert[0].getZf()); _meshData.getVertexBuffer().put(vert[1].getXf()).put(vert[1].getYf()).put(vert[1].getZf()); _meshData.getVertexBuffer().put(vert[2].getXf()).put(vert[2].getYf()).put(vert[2].getZf()); _meshData.getVertexBuffer().put(vert[3].getXf()).put(vert[3].getYf()).put(vert[3].getZf()); _meshData.getVertexBuffer().put(vert[4].getXf()).put(vert[4].getYf()).put(vert[4].getZf()); _meshData.getVertexBuffer().put(vert[5].getXf()).put(vert[5].getYf()).put(vert[5].getZf()); _meshData.getVertexBuffer().put(vert[6].getXf()).put(vert[6].getYf()).put(vert[6].getZf()); _meshData.getVertexBuffer().put(vert[7].getXf()).put(vert[7].getYf()).put(vert[7].getZf()); }
public void regenerate(final Renderer renderer) { for (int unit = validLevels - 1; unit >= 0; unit--) { float x = eyePosition.getXf(); float y = eyePosition.getZf(); final int exp2 = (int) Math.pow(2, unit); x /= exp2; y /= exp2; final int offX = MathUtils.floor(x); final int offY = MathUtils.floor(y); final LevelData levelData = levelDataList.get(unit); final int sX = offX - textureSize / 2; final int sY = offY - textureSize / 2; updateQuick(renderer, levelData, textureSize + 1, textureSize + 1, sX, sY, levelData.offsetX, levelData.offsetY, textureSize, textureSize); } }
@Override public void getGLApplyMatrix(final FloatBuffer store) { if (_rotationMatrix) { store.put(0, (float) (_scale.getX() * _matrix._m00)); store.put(1, (float) (_scale.getX() * _matrix._m10)); store.put(2, (float) (_scale.getX() * _matrix._m20)); store.put(4, (float) (_scale.getY() * _matrix._m01)); store.put(5, (float) (_scale.getY() * _matrix._m11)); store.put(6, (float) (_scale.getY() * _matrix._m21)); store.put(8, (float) (_scale.getZ() * _matrix._m02)); store.put(9, (float) (_scale.getZ() * _matrix._m12)); store.put(10, (float) (_scale.getZ() * _matrix._m22)); } else { store.put(0, (float) _matrix._m00); store.put(1, (float) _matrix._m10); store.put(2, (float) _matrix._m20); store.put(4, (float) _matrix._m01); store.put(5, (float) _matrix._m11); store.put(6, (float) _matrix._m21); store.put(8, (float) _matrix._m02); store.put(9, (float) _matrix._m12); store.put(10, (float) _matrix._m22); } store.put(12, _translation.getXf()); store.put(13, _translation.getYf()); store.put(14, _translation.getZf()); store.put(15, 1.0f); }
public void regenerate(final Renderer renderer) { for (int unit = validLevels - 1; unit >= 0; unit--) { float x = eyePosition.getXf(); float y = eyePosition.getZf(); final int exp2 = (int) Math.pow(2, unit); x /= exp2; y /= exp2; final int offX = MathUtils.floor(x); final int offY = MathUtils.floor(y); final LevelData levelData = levelDataList.get(unit); final int sX = offX - textureSize / 2; final int sY = offY - textureSize / 2; updateQuick(renderer, levelData, textureSize + 1, textureSize + 1, sX, sY, levelData.offsetX, levelData.offsetY, textureSize, textureSize); } }
store.put(14, _translation.getZf()); store.put(15, 1f);
_meshData.getNormalBuffer().put(_yAxis.getXf()).put(_yAxis.getYf()).put(_yAxis.getZf()); _meshData.getNormalBuffer().put(_yAxis.getXf()).put(_yAxis.getYf()).put(_yAxis.getZf()); _meshData.getNormalBuffer().put(_yAxis.getXf()).put(_yAxis.getYf()).put(_yAxis.getZf()); _meshData.getNormalBuffer().put(_yAxis.getXf()).put(_yAxis.getYf()).put(_yAxis.getZf()); _meshData.getNormalBuffer().put(_xAxis.getXf()).put(_xAxis.getYf()).put(_xAxis.getZf()); _meshData.getNormalBuffer().put(_xAxis.getXf()).put(_xAxis.getYf()).put(_xAxis.getZf()); _meshData.getNormalBuffer().put(_xAxis.getXf()).put(_xAxis.getYf()).put(_xAxis.getZf()); _meshData.getNormalBuffer().put(_xAxis.getXf()).put(_xAxis.getYf()).put(_xAxis.getZf()); _meshData.getNormalBuffer().put(-_xAxis.getXf()).put(-_xAxis.getYf()).put(-_xAxis.getZf()); _meshData.getNormalBuffer().put(-_xAxis.getXf()).put(-_xAxis.getYf()).put(-_xAxis.getZf()); _meshData.getNormalBuffer().put(-_xAxis.getXf()).put(-_xAxis.getYf()).put(-_xAxis.getZf()); _meshData.getNormalBuffer().put(-_xAxis.getXf()).put(-_xAxis.getYf()).put(-_xAxis.getZf()); _meshData.getNormalBuffer().put(-_yAxis.getXf()).put(-_yAxis.getYf()).put(-_yAxis.getZf()); _meshData.getNormalBuffer().put(-_yAxis.getXf()).put(-_yAxis.getYf()).put(-_yAxis.getZf()); _meshData.getNormalBuffer().put(-_yAxis.getXf()).put(-_yAxis.getYf()).put(-_yAxis.getZf()); _meshData.getNormalBuffer().put(-_yAxis.getXf()).put(-_yAxis.getYf()).put(-_yAxis.getZf()); _meshData.getNormalBuffer().put(-_zAxis.getXf()).put(-_zAxis.getYf()).put(-_zAxis.getZf()); _meshData.getNormalBuffer().put(-_zAxis.getXf()).put(-_zAxis.getYf()).put(-_zAxis.getZf()); _meshData.getNormalBuffer().put(-_zAxis.getXf()).put(-_zAxis.getYf()).put(-_zAxis.getZf()); _meshData.getNormalBuffer().put(-_zAxis.getXf()).put(-_zAxis.getYf()).put(-_zAxis.getZf()); _meshData.getNormalBuffer().put(_zAxis.getXf()).put(_zAxis.getYf()).put(_zAxis.getZf()); _meshData.getNormalBuffer().put(_zAxis.getXf()).put(_zAxis.getYf()).put(_zAxis.getZf()); _meshData.getNormalBuffer().put(_zAxis.getXf()).put(_zAxis.getYf()).put(_zAxis.getZf()); _meshData.getNormalBuffer().put(_zAxis.getXf()).put(_zAxis.getYf()).put(_zAxis.getZf());
_meshData.getNormalBuffer().put(_yAxis.getXf()).put(_yAxis.getYf()).put(_yAxis.getZf()); _meshData.getNormalBuffer().put(_yAxis.getXf()).put(_yAxis.getYf()).put(_yAxis.getZf()); _meshData.getNormalBuffer().put(_yAxis.getXf()).put(_yAxis.getYf()).put(_yAxis.getZf()); _meshData.getNormalBuffer().put(_yAxis.getXf()).put(_yAxis.getYf()).put(_yAxis.getZf()); _meshData.getNormalBuffer().put(_xAxis.getXf()).put(_xAxis.getYf()).put(_xAxis.getZf()); _meshData.getNormalBuffer().put(_xAxis.getXf()).put(_xAxis.getYf()).put(_xAxis.getZf()); _meshData.getNormalBuffer().put(_xAxis.getXf()).put(_xAxis.getYf()).put(_xAxis.getZf()); _meshData.getNormalBuffer().put(_xAxis.getXf()).put(_xAxis.getYf()).put(_xAxis.getZf()); _meshData.getNormalBuffer().put(-_xAxis.getXf()).put(-_xAxis.getYf()).put(-_xAxis.getZf()); _meshData.getNormalBuffer().put(-_xAxis.getXf()).put(-_xAxis.getYf()).put(-_xAxis.getZf()); _meshData.getNormalBuffer().put(-_xAxis.getXf()).put(-_xAxis.getYf()).put(-_xAxis.getZf()); _meshData.getNormalBuffer().put(-_xAxis.getXf()).put(-_xAxis.getYf()).put(-_xAxis.getZf()); _meshData.getNormalBuffer().put(-_yAxis.getXf()).put(-_yAxis.getYf()).put(-_yAxis.getZf()); _meshData.getNormalBuffer().put(-_yAxis.getXf()).put(-_yAxis.getYf()).put(-_yAxis.getZf()); _meshData.getNormalBuffer().put(-_yAxis.getXf()).put(-_yAxis.getYf()).put(-_yAxis.getZf()); _meshData.getNormalBuffer().put(-_yAxis.getXf()).put(-_yAxis.getYf()).put(-_yAxis.getZf()); _meshData.getNormalBuffer().put(-_zAxis.getXf()).put(-_zAxis.getYf()).put(-_zAxis.getZf()); _meshData.getNormalBuffer().put(-_zAxis.getXf()).put(-_zAxis.getYf()).put(-_zAxis.getZf()); _meshData.getNormalBuffer().put(-_zAxis.getXf()).put(-_zAxis.getYf()).put(-_zAxis.getZf()); _meshData.getNormalBuffer().put(-_zAxis.getXf()).put(-_zAxis.getYf()).put(-_zAxis.getZf()); _meshData.getNormalBuffer().put(_zAxis.getXf()).put(_zAxis.getYf()).put(_zAxis.getZf()); _meshData.getNormalBuffer().put(_zAxis.getXf()).put(_zAxis.getYf()).put(_zAxis.getZf()); _meshData.getNormalBuffer().put(_zAxis.getXf()).put(_zAxis.getYf()).put(_zAxis.getZf()); _meshData.getNormalBuffer().put(_zAxis.getXf()).put(_zAxis.getYf()).put(_zAxis.getZf());
/** * * <code>setNormalData</code> sets the normals of each of the box's planes. * * */ private void setNormalData() { final Vector3[] vert = computeVertices(); // returns 8 _meshData.setNormalBuffer(BufferUtils.createVector3Buffer(_meshData.getNormalBuffer(), 8)); final Vector3 norm = new Vector3(); _meshData.getNormalBuffer().clear(); for (int i = 0; i < 8; i++) { norm.set(vert[i]).normalizeLocal(); _meshData.getNormalBuffer().put(norm.getXf()).put(norm.getYf()).put(norm.getZf()); } }
public float getHeightAt(final double x, final double z) { final Vector3 heightCalc = new Vector3(x, 0, z); worldToLocal(heightCalc, heightCalc); final float height = getClipmaps().get(0).getCache().getSubHeight(heightCalc.getXf(), heightCalc.getZf()); heightCalc.set(x, height, z); localToWorld(heightCalc, heightCalc); return heightCalc.getYf(); }
/** * * <code>setNormalData</code> sets the normals of each of the box's planes. * * */ private void setNormalData() { final Vector3[] vert = computeVertices(); // returns 8 _meshData.setNormalBuffer(BufferUtils.createVector3Buffer(_meshData.getNormalBuffer(), 8)); final Vector3 norm = new Vector3(); _meshData.getNormalBuffer().clear(); for (int i = 0; i < 8; i++) { norm.set(vert[i]).normalizeLocal(); _meshData.getNormalBuffer().put(norm.getXf()).put(norm.getYf()).put(norm.getZf()); } }
/** * Get height of the terrain at the given world coordinates. This height will correlate to the finest level of * detail, currently valid clipmap level at the given coordinates. * * @param x * world x-coordinate * @param z * world z-coordinate * @return the height, in world coordinate */ public float getHeightAt(final double x, final double z) { final Vector3 heightCalc = new Vector3(x, 0, z); worldToLocal(heightCalc, heightCalc); final float height = getClipmaps().get(0).getCache().getSubHeight(heightCalc.getXf(), heightCalc.getZf()); heightCalc.set(x, height, z); localToWorld(heightCalc, heightCalc); return heightCalc.getYf(); }
MathUtils.floor(minPoint.getZf()), 0));
MathUtils.floor(minPoint.getZf()), 0));