@Override public void resetObject() { // assert this.id != -1; this.id = -1; setUpdateNeeded(); }
/** * @param usage The usage of this buffer. See {@link Usage} for more * information. */ public void setUsage(Usage usage){ // if (id != -1) // throw new UnsupportedOperationException("Data has already been sent. Cannot set usage."); this.usage = usage; this.setUpdateNeeded(); }
@Override public void setTSpaceBasic(float[] tangent, float sign, int face, int vert) { int vertIndex = getIndex(face, vert); VertexBuffer tangentBuffer = mesh.getBuffer(VertexBuffer.Type.Tangent); FloatBuffer tan = (FloatBuffer) tangentBuffer.getData(); tan.position(vertIndex * 4); tan.put(tangent); tan.put(sign); tan.rewind(); tangentBuffer.setUpdateNeeded(); }
this.componentsLength = components * format.getComponentSize(); this.lastLimit = data.limit(); setUpdateNeeded();
private void setInBuffer(Mesh mesh, int index, Vector3f normal, Vector3f tangent, Vector3f binormal) { VertexBuffer NB = mesh.getBuffer(Type.Normal); VertexBuffer TB = mesh.getBuffer(Type.Tangent); VertexBuffer BB = mesh.getBuffer(Type.Binormal); BufferUtils.setInBuffer(normal, (FloatBuffer)NB.getData(), index); BufferUtils.setInBuffer(tangent, (FloatBuffer)TB.getData(), index); BufferUtils.setInBuffer(binormal, (FloatBuffer)BB.getData(), index); NB.setUpdateNeeded(); TB.setUpdateNeeded(); BB.setUpdateNeeded(); }
/** * Converts single floating-point data to {@link Format#Half half} floating-point data. */ public void convertToHalf(){ if (id != -1) { throw new UnsupportedOperationException("Data has already been sent."); } if (format != Format.Float) { throw new IllegalStateException("Format must be float!"); } int numElements = data.limit() / components; format = Format.Half; this.componentsLength = components * format.getComponentSize(); ByteBuffer halfData = BufferUtils.createByteBuffer(componentsLength * numElements); halfData.rewind(); FloatBuffer floatData = (FloatBuffer) data; floatData.rewind(); for (int i = 0; i < floatData.limit(); i++){ float f = floatData.get(i); short half = FastMath.convertFloatToHalf(f); halfData.putShort(half); } this.data = halfData; setUpdateNeeded(); dataSizeChanged = true; }
protected void setHeight(List<LocationHeight> locationHeights, boolean overrideHeight) { final float[] heightArray = geomap.getHeightArray(); final VertexBuffer vertexBuffer = mesh.getBuffer(Type.Position); final FloatBuffer floatBuffer = mesh.getFloatBuffer(Type.Position); for (LocationHeight lh : locationHeights) { if (lh.x < 0 || lh.z < 0 || lh.x >= size || lh.z >= size) { continue; } int idx = lh.z * size + lh.x; if (overrideHeight) { heightArray[idx] = lh.h; } else { float currentHeight = floatBuffer.get(idx * 3 + 1); heightArray[idx] = currentHeight + lh.h; } } floatBuffer.clear(); geomap.writeVertexArray(floatBuffer, stepScale, false); vertexBuffer.setUpdateNeeded(); }
vb.setUpdateNeeded(); }else{
setUpdateNeeded(); dataSizeChanged = true;
positions.setUpdateNeeded(); normals.setUpdateNeeded(); tangents.setUsage(Usage.Static); tangentsBP.copyElements(0, tangents, 0, tangentsBP.getNumElements()); tangents.setUpdateNeeded();
@Override public void resetObject() { // assert this.id != -1; this.id = -1; setUpdateNeeded(); }
/** * @param usage The usage of this buffer. See {@link Usage} for more * information. */ public void setUsage(Usage usage){ // if (id != -1) // throw new UnsupportedOperationException("Data has already been sent. Cannot set usage."); this.usage = usage; this.setUpdateNeeded(); }
@Override public void resetObject() { // assert this.id != -1; this.id = -1; setUpdateNeeded(); }
public void setupData(Usage usage, int components, Format format, int offset, int stride){ if (id != -1) throw new UnsupportedOperationException("Data has already been sent. Cannot setupData again."); if (usage == null || format == null || data == null) throw new IllegalArgumentException("None of the arguments can be null"); if (components < 1 || components > 4) throw new IllegalArgumentException("components must be between 1 and 4"); this.data = data; this.components = components; this.usage = usage; this.format = format; this.componentsLength = components * format.getComponentSize(); this.offset = offset; this.stride = stride; setUpdateNeeded(); }
@Override public void setTSpaceBasic(float[] tangent, float sign, int face, int vert) { int vertIndex = getIndex(face, vert); VertexBuffer tangentBuffer = mesh.getBuffer(VertexBuffer.Type.Tangent); FloatBuffer tan = (FloatBuffer) tangentBuffer.getData(); tan.position(vertIndex * 4); tan.put(tangent); tan.put(sign); tan.rewind(); tangentBuffer.setUpdateNeeded(); }
/** * Converts single floating-point data to {@link Format#Half half} floating-point data. */ public void convertToHalf(){ if (id != -1) throw new UnsupportedOperationException("Data has already been sent."); if (format != Format.Float) throw new IllegalStateException("Format must be float!"); int numElements = data.limit() / components; format = Format.Half; this.componentsLength = components * format.getComponentSize(); ByteBuffer halfData = BufferUtils.createByteBuffer(componentsLength * numElements); halfData.rewind(); FloatBuffer floatData = (FloatBuffer) data; floatData.rewind(); for (int i = 0; i < floatData.limit(); i++){ float f = floatData.get(i); short half = FastMath.convertFloatToHalf(f); halfData.putShort(half); } this.data = halfData; setUpdateNeeded(); dataSizeChanged = true; }
private void setInBuffer(Mesh mesh, int index, Vector3f normal, Vector3f tangent, Vector3f binormal) { VertexBuffer NB = mesh.getBuffer(Type.Normal); VertexBuffer TB = mesh.getBuffer(Type.Tangent); VertexBuffer BB = mesh.getBuffer(Type.Binormal); BufferUtils.setInBuffer(normal, (FloatBuffer)NB.getData(), index); BufferUtils.setInBuffer(tangent, (FloatBuffer)TB.getData(), index); BufferUtils.setInBuffer(binormal, (FloatBuffer)BB.getData(), index); NB.setUpdateNeeded(); TB.setUpdateNeeded(); BB.setUpdateNeeded(); }
void _resetToBind(PMDMesh mesh) { VertexBuffer vb = mesh.getBuffer(VertexBuffer.Type.Position); FloatBuffer vfb = (FloatBuffer) vb.getData(); VertexBuffer nb = mesh.getBuffer(VertexBuffer.Type.Normal); FloatBuffer nfb = (FloatBuffer) nb.getData(); VertexBuffer bvb = mesh.getBuffer(VertexBuffer.Type.BindPosePosition); FloatBuffer bvfb = (FloatBuffer) bvb.getData(); VertexBuffer bnb = mesh.getBuffer(VertexBuffer.Type.BindPoseNormal); FloatBuffer bnfb = (FloatBuffer) bnb.getData(); for (int i = 0; i < vfb.capacity(); i++) { vfb.put(i, bvfb.get(i)); } for (int i = 0; i < nfb.capacity(); i++) { nfb.put(i, bnfb.get(i)); } vb.setUpdateNeeded(); nb.setUpdateNeeded(); } void resetToBindSkinBackData(PMDSkinMesh mesh) {
void resetToBindSkinBackData(PMDSkinMesh mesh) { VertexBuffer vb = mesh.getSkinvb2(); // mesh.getBuffer(VertexBuffer.Type.Position); FloatBuffer vfb = (FloatBuffer) vb.getData(); // VertexBuffer nb = mesh.getSkinnb2(); //mesh.getBuffer(VertexBuffer.Type.Normal); // FloatBuffer nfb = (FloatBuffer) nb.getData(); VertexBuffer bvb = mesh.getBuffer(VertexBuffer.Type.BindPosePosition); FloatBuffer bvfb = (FloatBuffer) bvb.getData(); VertexBuffer bnb = mesh.getBuffer(VertexBuffer.Type.BindPoseNormal); FloatBuffer bnfb = (FloatBuffer) bnb.getData(); for (int i = 0; i < vfb.capacity(); i++) { vfb.put(i, bvfb.get(i)); } // for (int i = 0; i < nfb.capacity(); i++) { // nfb.put(i, bnfb.get(i)); // } vb.setUpdateNeeded(); // nb.setUpdateNeeded(); } public Set<String> getSkinSet() {