Search in sources :

Example 51 with FloatBuffer

use of java.nio.FloatBuffer in project jmonkeyengine by jMonkeyEngine.

the class StripBox method duUpdateGeometryVertices.

protected void duUpdateGeometryVertices() {
    FloatBuffer fpb = BufferUtils.createVector3Buffer(8 * 3);
    Vector3f[] v = computeVertices();
    fpb.put(new float[] { v[0].x, v[0].y, v[0].z, v[1].x, v[1].y, v[1].z, v[2].x, v[2].y, v[2].z, v[3].x, v[3].y, v[3].z, v[4].x, v[4].y, v[4].z, v[5].x, v[5].y, v[5].z, v[6].x, v[6].y, v[6].z, v[7].x, v[7].y, v[7].z });
    setBuffer(Type.Position, 3, fpb);
    setMode(Mode.TriangleStrip);
    updateBound();
}
Also used : Vector3f(com.jme3.math.Vector3f) FloatBuffer(java.nio.FloatBuffer)

Example 52 with FloatBuffer

use of java.nio.FloatBuffer in project jmonkeyengine by jMonkeyEngine.

the class Arrow method setArrowExtent.

/**
     * Sets the arrow's extent.
     * This will modify the buffers on the mesh.
     * 
     * @param extent the arrow's extent.
     */
public void setArrowExtent(Vector3f extent) {
    float len = extent.length();
    //        Vector3f dir = extent.normalize();
    tempQuat.lookAt(extent, Vector3f.UNIT_Y);
    tempQuat.normalizeLocal();
    VertexBuffer pvb = getBuffer(Type.Position);
    FloatBuffer buffer = (FloatBuffer) pvb.getData();
    buffer.rewind();
    for (int i = 0; i < positions.length; i += 3) {
        Vector3f vec = tempVec.set(positions[i], positions[i + 1], positions[i + 2]);
        vec.multLocal(len);
        tempQuat.mult(vec, vec);
        buffer.put(vec.x);
        buffer.put(vec.y);
        buffer.put(vec.z);
    }
    pvb.updateData(buffer);
    updateBound();
    updateCounts();
}
Also used : VertexBuffer(com.jme3.scene.VertexBuffer) Vector3f(com.jme3.math.Vector3f) FloatBuffer(java.nio.FloatBuffer)

Example 53 with FloatBuffer

use of java.nio.FloatBuffer in project jmonkeyengine by jMonkeyEngine.

the class WireFrustum method update.

public void update(Vector3f[] points) {
    VertexBuffer vb = getBuffer(Type.Position);
    if (vb == null) {
        setBuffer(Type.Position, 3, BufferUtils.createFloatBuffer(points));
        return;
    }
    FloatBuffer b = BufferUtils.createFloatBuffer(points);
    FloatBuffer a = (FloatBuffer) vb.getData();
    b.rewind();
    a.rewind();
    a.put(b);
    a.rewind();
    vb.updateData(a);
    updateBound();
}
Also used : VertexBuffer(com.jme3.scene.VertexBuffer) FloatBuffer(java.nio.FloatBuffer)

Example 54 with FloatBuffer

use of java.nio.FloatBuffer in project jmonkeyengine by jMonkeyEngine.

the class WireSphere method updatePositions.

public void updatePositions(float radius) {
    VertexBuffer pvb = getBuffer(Type.Position);
    FloatBuffer pb;
    if (pvb == null) {
        pvb = new VertexBuffer(Type.Position);
        pb = BufferUtils.createVector3Buffer(samples * 2 + samples * zSamples);
        pvb.setupData(Usage.Dynamic, 3, Format.Float, pb);
        setBuffer(pvb);
    } else {
        pb = (FloatBuffer) pvb.getData();
    }
    pb.rewind();
    // X axis
    //        pb.put(radius).put(0).put(0);
    //        pb.put(-radius).put(0).put(0);
    //
    //        // Y axis
    //        pb.put(0).put(radius).put(0);
    //        pb.put(0).put(-radius).put(0);
    //
    //        // Z axis
    //        pb.put(0).put(0).put(radius);
    //        pb.put(0).put(0).put(-radius);
    float rate = FastMath.TWO_PI / (float) samples;
    float angle = 0;
    for (int i = 0; i < samples; i++) {
        float x = radius * FastMath.cos(angle);
        float y = radius * FastMath.sin(angle);
        pb.put(x).put(y).put(0);
        angle += rate;
    }
    angle = 0;
    for (int i = 0; i < samples; i++) {
        float x = radius * FastMath.cos(angle);
        float y = radius * FastMath.sin(angle);
        pb.put(0).put(x).put(y);
        angle += rate;
    }
    float zRate = (radius * 2) / (float) (zSamples);
    float zHeight = -radius + (zRate / 2f);
    float rb = 1f / zSamples;
    float b = rb / 2f;
    for (int k = 0; k < zSamples; k++) {
        angle = 0;
        float scale = FastMath.sin(b * FastMath.PI);
        for (int i = 0; i < samples; i++) {
            float x = radius * FastMath.cos(angle);
            float y = radius * FastMath.sin(angle);
            pb.put(x * scale).put(zHeight).put(y * scale);
            angle += rate;
        }
        zHeight += zRate;
        b += rb;
    }
}
Also used : VertexBuffer(com.jme3.scene.VertexBuffer) FloatBuffer(java.nio.FloatBuffer)

Example 55 with FloatBuffer

use of java.nio.FloatBuffer in project jmonkeyengine by jMonkeyEngine.

the class InstancedGeometry method updateInstances.

public void updateInstances() {
    FloatBuffer fb = (FloatBuffer) transformInstanceData.getData();
    fb.limit(fb.capacity());
    fb.position(0);
    TempVars vars = TempVars.get();
    {
        float[] temp = vars.matrixWrite;
        for (int i = 0; i < firstUnusedIndex; i++) {
            Geometry geom = geometries[i];
            if (geom == null) {
                geom = geometries[firstUnusedIndex - 1];
                if (geom == null) {
                    throw new AssertionError();
                }
                swap(i, firstUnusedIndex - 1);
                while (geometries[firstUnusedIndex - 1] == null) {
                    firstUnusedIndex--;
                }
            }
            Matrix4f worldMatrix = geom.getWorldMatrix();
            updateInstance(worldMatrix, temp, 0, vars.tempMat3, vars.quat1);
            fb.put(temp);
        }
    }
    vars.release();
    fb.flip();
    if (fb.limit() / INSTANCE_SIZE != firstUnusedIndex) {
        throw new AssertionError();
    }
    transformInstanceData.updateData(fb);
}
Also used : Geometry(com.jme3.scene.Geometry) Matrix4f(com.jme3.math.Matrix4f) FloatBuffer(java.nio.FloatBuffer) TempVars(com.jme3.util.TempVars)

Aggregations

FloatBuffer (java.nio.FloatBuffer)291 ByteBuffer (java.nio.ByteBuffer)82 IntBuffer (java.nio.IntBuffer)43 ShortBuffer (java.nio.ShortBuffer)39 Vector3f (com.jme3.math.Vector3f)27 VertexBuffer (com.jme3.scene.VertexBuffer)27 DoubleBuffer (java.nio.DoubleBuffer)17 IndexBuffer (com.jme3.scene.mesh.IndexBuffer)16 LongBuffer (java.nio.LongBuffer)10 Mesh (com.jme3.scene.Mesh)9 CharBuffer (java.nio.CharBuffer)9 FrameBuffer2D (androidx.media.filterfw.FrameBuffer2D)8 OutputPort (androidx.media.filterfw.OutputPort)7 Matrix4f (com.jme3.math.Matrix4f)7 Buffer (java.nio.Buffer)7 TempVars (com.jme3.util.TempVars)6 IOException (java.io.IOException)6 BufferOverflowException (java.nio.BufferOverflowException)6 BufferUnderflowException (java.nio.BufferUnderflowException)6 ArrayList (java.util.ArrayList)6