Example #1
0
        public TranslationGizmo(Vector3 scale, bool generateGeom = false)
        {
            Arrow XAxis = new Arrow(0.015f, 0.25f, new Vector3(1.0f, 0.0f, 0.0f), false, 20);
            Arrow YAxis = new Arrow(0.015f, 0.25f, new Vector3(0.0f, 1.0f, 0.0f), false, 20);
            Arrow ZAxis = new Arrow(0.015f, 0.25f, new Vector3(0.0f, 0.0f, 1.0f), false, 20);

            //Transform Primitives before merging
            //Scale matrix
            Matrix4 s = Matrix4.CreateScale(scale);
            //Move arrowhead up in place
            Matrix4 t = s * Matrix4.CreateRotationZ(MathUtils.radians(90));

            XAxis.applyTransform(t);
            t = s * Matrix4.CreateRotationX(MathUtils.radians(90));
            ZAxis.applyTransform(t);

            //Merge Primitives
            Primitive p1 = mergePrimitives(XAxis, YAxis);
            Primitive p  = mergePrimitives(p1, ZAxis);

            verts   = p.verts;
            indices = p.indices;
            colors  = p.colors;

            if (generateGeom)
            {
                geom = getGeom();
            }
        }
Example #2
0
        private void generateGizmoParts()
        {
            //Translation Gizmo
            GMDL.Primitives.Arrow translation_x_axis = new GMDL.Primitives.Arrow(0.015f, 0.25f, new Vector3(1.0f, 0.0f, 0.0f), false, 20);
            //Move arrowhead up in place
            Matrix4 t = Matrix4.CreateRotationZ(MathUtils.radians(90));

            translation_x_axis.applyTransform(t);

            GMDL.Primitives.Arrow translation_y_axis = new GMDL.Primitives.Arrow(0.015f, 0.25f, new Vector3(0.0f, 1.0f, 0.0f), false, 20);
            GMDL.Primitives.Arrow translation_z_axis = new GMDL.Primitives.Arrow(0.015f, 0.25f, new Vector3(0.0f, 0.0f, 1.0f), false, 20);
            t = Matrix4.CreateRotationX(MathUtils.radians(90));
            translation_z_axis.applyTransform(t);

            //Generate Geom objects
            translation_x_axis.geom = translation_x_axis.getGeom();
            translation_y_axis.geom = translation_y_axis.getGeom();
            translation_z_axis.geom = translation_z_axis.getGeom();


            GLPrimitiveVaos["default_translation_gizmo_x_axis"] = translation_x_axis.getVAO();
            GLPrimitiveVaos["default_translation_gizmo_y_axis"] = translation_y_axis.getVAO();
            GLPrimitiveVaos["default_translation_gizmo_z_axis"] = translation_z_axis.getVAO();


            //Generate PrimitiveMeshVaos
            for (int i = 0; i < 3; i++)
            {
                string name = "";
                GMDL.Primitives.Primitive arr = null;
                switch (i)
                {
                case 0:
                    arr  = translation_x_axis;
                    name = "default_translation_gizmo_x_axis";
                    break;

                case 1:
                    arr  = translation_y_axis;
                    name = "default_translation_gizmo_y_axis";
                    break;

                case 2:
                    arr  = translation_z_axis;
                    name = "default_translation_gizmo_z_axis";
                    break;
                }

                GLPrimitiveMeshVaos[name]                        = new GLMeshVao();
                GLPrimitiveMeshVaos[name].type                   = TYPES.GIZMOPART;
                GLPrimitiveMeshVaos[name].metaData               = new MeshMetaData();
                GLPrimitiveMeshVaos[name].metaData.batchcount    = arr.geom.indicesCount;
                GLPrimitiveMeshVaos[name].metaData.indicesLength = DrawElementsType.UnsignedInt;
                GLPrimitiveMeshVaos[name].vao                    = GLPrimitiveVaos[name];
                GLPrimitiveMeshVaos[name].material               = GLmaterials["crossMat"];
            }
        }
Example #3
0
        private Primitive generatePrimitive(Vector3 scale)
        {
            Arrow XPosAxis = new Arrow(0.02f, scale.X, new Vector3(10.5f, 0.0f, 0.0f), false, 5);
            Arrow XNegAxis = new Arrow(0.01f, scale.X, new Vector3(10.5f, 0.1f, 0.1f), false, 5);
            Arrow YPosAxis = new Arrow(0.02f, scale.Y, new Vector3(0.0f, 10.5f, 0.0f), false, 5);
            Arrow YNegAxis = new Arrow(0.01f, scale.Y, new Vector3(0.1f, 10.5f, 0.1f), false, 5);
            Arrow ZPosAxis = new Arrow(0.02f, scale.Z, new Vector3(0.0f, 0.0f, 10.5f), false, 5);
            Arrow ZNegAxis = new Arrow(0.01f, scale.Z, new Vector3(0.1f, 0.1f, 10.5f), false, 5);

            //SquareCross2D c = new SquareCross2D(0.01f, new Vector3(0.0f, 10.5f, 0.0f), false);

            //Transform Primitives before merging
            //Global Scale matrix
            //Matrix4 s = Matrix4.CreateScale(scale);
            Matrix4 s = Matrix4.Identity;
            Matrix4 t;

            //Move arrowhead up in place
            t = s * Matrix4.CreateRotationZ(MathUtils.radians(90));
            XNegAxis.applyTransform(t);
            t = s * Matrix4.CreateRotationZ(MathUtils.radians(-90));
            XPosAxis.applyTransform(t);

            t = s * Matrix4.CreateRotationX(MathUtils.radians(90));
            ZPosAxis.applyTransform(t);
            t = s * Matrix4.CreateRotationX(MathUtils.radians(-90));
            ZNegAxis.applyTransform(t);

            t = s * Matrix4.CreateRotationX(MathUtils.radians(180));
            YNegAxis.applyTransform(t);
            YPosAxis.applyTransform(s);

            //Merge Primitives
            Primitive py = mergePrimitives(YPosAxis, YNegAxis);
            Primitive px = mergePrimitives(XNegAxis, XPosAxis);
            Primitive pz = mergePrimitives(ZNegAxis, ZPosAxis);

            Primitive p = mergePrimitives(py, px);

            p = mergePrimitives(p, pz);


            return(p);
        }