Package com.ardor3d.math

Examples of com.ardor3d.math.Vector3


            final boolean inOrtho = renderer.isInOrthoMode();
            if (!inOrtho) {
                renderer.setOrtho();
            }
            final Transform store = Transform.fetchTempInstance();
            final Vector3 point = Vector3.fetchTempInstance();
            for (int i = 0, max = joints.length; i < max; i++) {
                SkeletalDebugger.jointText.setText(i + ". " + joints[i].getName());

                final Transform t = scene.getWorldTransform().multiply(globals[i], store);
                point.zero();
                SkeletalDebugger.jointText.setTranslation(Camera.getCurrentCamera().getScreenCoordinates(
                        t.applyForward(point)));

                final double size = SkeletalDebugger.LABEL_RATIO;
                SkeletalDebugger.jointText.setScale(size, size, -size);
View Full Code Here


     *            the Renderer to draw with.
     */
    private static void drawBone(final Transform start, final Transform end, final Spatial scene,
            final Renderer renderer) {
        // Determine our start and end points
        final Vector3 stPnt = Vector3.fetchTempInstance();
        final Vector3 endPnt = Vector3.fetchTempInstance();
        start.applyForward(Vector3.ZERO, stPnt);
        end.applyForward(Vector3.ZERO, endPnt);

        // determine distance and use as a scale to elongate the bone
        double scale = stPnt.distance(endPnt);
        if (scale == 0) {
            scale = MathUtils.ZERO_TOLERANCE;
        }
        final BoundingVolume vol = scene.getWorldBound();
        double size = 1.0;
        if (vol != null) {
            SkeletalDebugger.measureSphere.setCenter(vol.getCenter());
            SkeletalDebugger.measureSphere.setRadius(0);
            SkeletalDebugger.measureSphere.mergeLocal(vol);
            size = SkeletalDebugger.BONE_RATIO * SkeletalDebugger.measureSphere.getRadius();
        }
        SkeletalDebugger.bone.setWorldTransform(Transform.IDENTITY);
        SkeletalDebugger.bone.setWorldScale(size, size, scale);

        // determine center point of bone (translation).
        final Vector3 store = Vector3.fetchTempInstance();
        SkeletalDebugger.bone.setWorldTranslation(stPnt.add(endPnt, store).divideLocal(2.0));
        Vector3.releaseTempInstance(store);

        // Orient bone to point along axis formed by start and end points.
        final Matrix3 orient = Matrix3.fetchTempInstance();
View Full Code Here

            SkeletalDebugger.measureSphere.setRadius(0);
            SkeletalDebugger.measureSphere.mergeLocal(vol);
            size = SkeletalDebugger.BONE_RATIO * SkeletalDebugger.measureSphere.getRadius();
        }
        scene.getWorldTransform().multiply(jntTransform, SkeletalDebugger.spTransform);
        SkeletalDebugger.spTransform.getMatrix().scale(new Vector3(size, size, size), SkeletalDebugger.spMatrix);
        SkeletalDebugger.spTransform.setRotation(SkeletalDebugger.spMatrix);
        SkeletalDebugger.joint.setWorldTransform(SkeletalDebugger.spTransform);
        SkeletalDebugger.joint.draw(renderer);
    }
View Full Code Here

    /**
     * Sets all the default vertex normals to 'up', +1 in the Z direction.
     */
    private void setNormalData() {
        final Vector3 zAxis = new Vector3(0, 0, 1);
        for (int i = 0; i < NUM_POINTS; i++) {
            BufferUtils.setInBuffer(zAxis, _meshData.getNormalBuffer(), i);
        }
    }
View Full Code Here

        _meshData.setIndexBuffer(buf);
    }

    private void setTextureData() {
        final Vector2 tex = new Vector2();
        final Vector3 vert = new Vector3();
        for (int i = 0; i < NUM_POINTS; i++) {
            BufferUtils.populateFromBuffer(vert, _meshData.getVertexBuffer(), i);
            if (Math.abs(vert.getZ()) < _sideLength) {
                tex.setX(0.5 * (1.0 + Math.atan2(vert.getY(), vert.getX()) * MathUtils.INV_PI));
            } else {
                tex.setX(0.5);
            }
            tex.setY(Math.acos(vert.getZ() / _sideLength) * MathUtils.INV_PI);

            _meshData.getTextureCoords(0).getBuffer().put((float) tex.getX()).put((float) tex.getY());
        }
    }
View Full Code Here

            _meshData.getTextureCoords(0).getBuffer().put((float) tex.getX()).put((float) tex.getY());
        }
    }

    private void setNormalData() {
        final Vector3 norm = new Vector3();
        for (int i = 0; i < NUM_POINTS; i++) {
            BufferUtils.populateFromBuffer(norm, _meshData.getVertexBuffer(), i);
            norm.normalizeLocal();
            BufferUtils.setInBuffer(norm, _meshData.getNormalBuffer(), i);
        }
    }
View Full Code Here

     *
     */
    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());
        }
    }
View Full Code Here

     *
     * @return a size 8 array of Vectors representing the 8 points of the box.
     */
    public Vector3[] computeVertices() {

        final Vector3 akEAxis[] = { Vector3.UNIT_X.multiply(_xExtent, Vector3.fetchTempInstance()),
                Vector3.UNIT_Y.multiply(_yExtent, Vector3.fetchTempInstance()),
                Vector3.UNIT_Z.multiply(_zExtent, Vector3.fetchTempInstance()) };

        final Vector3 rVal[] = new Vector3[8];
        rVal[0] = _center.subtract(akEAxis[0], new Vector3()).subtractLocal(akEAxis[1]).subtractLocal(akEAxis[2]);
        rVal[1] = _center.add(akEAxis[0], new Vector3()).subtractLocal(akEAxis[1]).subtractLocal(akEAxis[2]);
        rVal[2] = _center.add(akEAxis[0], new Vector3()).addLocal(akEAxis[1]).subtractLocal(akEAxis[2]);
        rVal[3] = _center.subtract(akEAxis[0], new Vector3()).addLocal(akEAxis[1]).subtractLocal(akEAxis[2]);
        rVal[4] = _center.add(akEAxis[0], new Vector3()).subtractLocal(akEAxis[1]).addLocal(akEAxis[2]);
        rVal[5] = _center.subtract(akEAxis[0], new Vector3()).subtractLocal(akEAxis[1]).addLocal(akEAxis[2]);
        rVal[6] = _center.add(akEAxis[0], new Vector3()).addLocal(akEAxis[1]).addLocal(akEAxis[2]);
        rVal[7] = _center.subtract(akEAxis[0], new Vector3()).addLocal(akEAxis[1]).addLocal(akEAxis[2]);
        for (final Vector3 axis : akEAxis) {
            Vector3.releaseTempInstance(axis);
        }
        return rVal;
    }
View Full Code Here

    public void write(final OutputCapsule capsule) throws IOException {
        super.write(capsule);
        capsule.write(_xExtent, "xExtent", 0);
        capsule.write(_yExtent, "yExtent", 0);
        capsule.write(_zExtent, "zExtent", 0);
        capsule.write(_center, "center", new Vector3(Vector3.ZERO));

    }
View Full Code Here

    public void read(final InputCapsule capsule) throws IOException {
        super.read(capsule);
        _xExtent = capsule.readDouble("xExtent", 0);
        _yExtent = capsule.readDouble("yExtent", 0);
        _zExtent = capsule.readDouble("zExtent", 0);
        _center.set((Vector3) capsule.readSavable("center", new Vector3(Vector3.ZERO)));
    }
View Full Code Here

TOP

Related Classes of com.ardor3d.math.Vector3

Copyright © 2018 www.massapicom. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.