Ejemplo n.º 1
0
        public static void HierarchyTest()
        {
            Console.WriteLine(MethodBase.GetCurrentMethod().ReflectedType.Name + "." + MethodBase.GetCurrentMethod().Name);

            Scene            scene = new Scene();
            SimulationObject so0   = scene.AddObject();

            so0.Name = "0";
            Transform transform0 = so0.GetComponent <Transform>();

            SimulationObject so1 = scene.AddObject();

            so1.Name = "1";
            Transform transform1 = so1.GetComponent <Transform>();

            transform1.SetParent(transform0);

            transform1.LocalScale    = new Vector3(1, 3, 2);
            transform0.LocalPosition = new Vector3(0, 2, 0);

            Console.WriteLine(so0.Name + "\n" + transform0.LocalToWorldMatrix);
            Console.WriteLine(so1.Name + "\n" + transform1.LocalToWorldMatrix);

            ETE.Engine.Object.DestroyImmediate(so0);
        }
Ejemplo n.º 2
0
        public static void RotationTest()
        {
            Console.WriteLine(MethodBase.GetCurrentMethod().ReflectedType.Name + "." + MethodBase.GetCurrentMethod().Name);

            Scene            scene = new Scene();
            SimulationObject so0   = scene.AddObject();

            so0.Name = "0";
            Transform transform0 = so0.GetComponent <Transform>();

            SimulationObject so1 = scene.AddObject();

            so1.Name = "1";
            Transform transform1 = so1.GetComponent <Transform>();

            transform1.SetParent(transform0);

            transform1.LocalRotation = Quaternion.Euler(45, 30, 15);
            transform0.LocalRotation = Quaternion.Euler(15, 30, 45);

            Console.WriteLine(so0.Name + " " + transform0.LocalRotation + " " + transform0.LocalEulerAngles);
            Console.WriteLine(so0.Name + " " + transform0.Rotation + " " + transform0.EulerAngles);

            Console.WriteLine(so1.Name + " " + transform1.LocalRotation + " " + transform1.LocalEulerAngles);
            Console.WriteLine(so1.Name + " " + transform1.Rotation + " " + transform1.EulerAngles);
        }
Ejemplo n.º 3
0
        public static void ScaleTest()
        {
            Console.WriteLine(MethodBase.GetCurrentMethod().ReflectedType.Name + "." + MethodBase.GetCurrentMethod().Name);

            Scene            scene = new Scene();
            SimulationObject so0   = scene.AddObject();

            so0.Name = "0";
            Transform transform0 = so0.GetComponent <Transform>();

            SimulationObject so1 = scene.AddObject();

            so1.Name = "1";
            Transform transform1 = so1.GetComponent <Transform>();

            transform1.SetParent(transform0);

            transform1.LocalScale = new Vector3(4, 2, 1);
            Console.WriteLine(so1.Name + " " + transform1.LocalScale + " " + transform1.LossyScale);

            transform0.LocalScale = new Vector3(1, 2, 4);

            Console.WriteLine(so0.Name + " " + transform0.LocalScale + " " + transform0.LossyScale);
            Console.WriteLine(so1.Name + " " + transform1.LocalScale + " " + transform1.LossyScale);

            ETE.Engine.Object.DestroyImmediate(so0);
        }
Ejemplo n.º 4
0
        private void createModel()
        {
            loadAllFiles();

            // Create Camera
            {
                //Create Camera Components
                SimulationObject cameraObject = model.AddObject();
                cameraObject.Name = "cameraObj";

                Transform transform_camera = cameraObject.GetComponent <Transform>();
                transform_camera.Position = new Vector3(0.0f, 40.0f, 250.0f);

                ETE.Render.Component.Camera comp_camera = cameraObject.AddComponent <ETE.Render.Component.Camera>();
                comp_camera.TargetDisplay    = 0;
                comp_camera.BackGround_Color = new Vector4(0.2f, 0.2f, 0.4f, 1.0f);
                comp_camera.CameraOrder      = 0;
                comp_camera.Near             = 2.0f;
                comp_camera.Far          = 10000.0f;
                comp_camera.FOV          = 35.0f;
                comp_camera.Aspect_Ratio = 1.7021f;
            }

            createGTModel();
        }
Ejemplo n.º 5
0
        public static void HierarchyPositionTest()
        {
            Console.WriteLine(MethodBase.GetCurrentMethod().ReflectedType.Name + "." + MethodBase.GetCurrentMethod().Name);


            Scene            scene = new Scene();
            SimulationObject so0   = scene.AddObject();

            so0.Name = "0";
            Transform transform0 = so0.GetComponent <Transform>();

            SimulationObject so1 = scene.AddObject();

            so1.Name = "1";
            Transform transform1 = so1.GetComponent <Transform>();

            transform0.LocalPosition = new Vector3(0, 10, 0);
            transform1.LocalPosition = new Vector3(0, 5, 0);

            transform1.SetParent(transform0);

            Console.WriteLine(so0.Name + "\n" + transform0.LocalPosition + " " + transform0.Position);
            Console.WriteLine(so1.Name + "\n" + transform1.LocalPosition + " " + transform1.Position);

            transform1.Position = new Vector3(0, 20, 0);

            Console.WriteLine(so0.Name + "\n" + transform0.LocalPosition + " " + transform0.Position);
            Console.WriteLine(so1.Name + "\n" + transform1.LocalPosition + " " + transform1.Position);
        }
Ejemplo n.º 6
0
        public static void ComponentGetTest()
        {
            Scene            s = new Scene();
            SimulationObject o = s.AddObject();

            o.AddComponent <LifeCycleComponent>();
            LifeCycleComponent c = o.GetComponent <LifeCycleComponent>();

            Console.WriteLine(c.GetType().Name);
        }
Ejemplo n.º 7
0
        public void AddObject()
        {
            // Model에 시뮬레이션 오브젝트를 추가하고 컴포넌트를 연결합니다.
            SimulationObject SimObj = model.AddObject();

            SimObj.Name = string.Format("Triangle{0}", SimObj.GetInstanceID().ToString("D3"));
            SimObj.AddComponent <GLDrawComponent>();
            SimObj.AddComponent <TransformBehavior>();
            SimObj.GetComponent <Transform>().LocalScale = new ETE.Geometry.Vector3(scale, scale, scale);
            scale *= 0.95f;

            // 오브젝트 관리
            ObjectBuffer.Add(SimObj);
            // 작업 결과를 버퍼에 추가
            LogBuffer.Add(new LogInfo()
            {
                Log = "Add " + SimObj.Name, Time = DateTime.Now
            });
        }
Ejemplo n.º 8
0
        private void PhysicsScene02()
        {
            SimulationObject simObject   = null;
            Rigidbody        rigidbody   = null;
            BoxCollider      boxCollider = null;

            Mesh[]       meshArray     = RenderAsset.Load("box.gtm", typeof(Mesh)) as Mesh[];
            Material[]   materialArray = RenderAsset.Load("box.gtm", typeof(Material)) as Material[];
            MeshFilter   meshFilter    = null;
            MeshRenderer meshRender    = null;

            Mesh     mesh     = meshArray[0];
            Material material = materialArray[0];

            Shader shader = new Shader();

            material.Shader = shader;


            bool enableFixedJoint     = true;
            bool enableHingeJoint     = true;
            bool enableCharacterJoint = true;



            // fixedjoint test
            if (enableFixedJoint)
            {
                Transform transform = null;

                // Root1
                SimulationObject Root = model.AddObject();
                if (Root != null)
                {
                    Root.Name = "MyRoot1";

                    transform          = Root.GetComponent <Transform>();
                    transform.Position = new Vector3(-5, 0, 0);

                    //add render component
                    meshFilter      = Root.AddComponent <MeshFilter>();
                    meshFilter.mesh = mesh;

                    meshRender          = Root.AddComponent <MeshRenderer>();
                    meshRender.material = material;

                    //add physics component
                    rigidbody      = Root.AddComponent <Rigidbody>();
                    rigidbody.mass = 0;

                    boxCollider      = Root.AddComponent <BoxCollider>();
                    boxCollider.size = new Vector3(1, 1, 1);
                }

                // simObject1
                simObject      = model.AddObject();
                simObject.Name = "simObject1";


                transform          = simObject.GetComponent <Transform>();
                transform.Position = new Vector3(-5, 0, 0);


                //add render component
                meshFilter      = simObject.AddComponent <MeshFilter>();
                meshFilter.mesh = mesh;

                meshRender          = simObject.AddComponent <MeshRenderer>();
                meshRender.material = material;

                //add physics component
                rigidbody = simObject.AddComponent <Rigidbody>();

                boxCollider      = simObject.AddComponent <BoxCollider>();
                boxCollider.size = new Vector3(1, 1, 1);

                FixedJoint fixedjoint = Root.AddComponent <FixedJoint>();
                if (fixedjoint != null)
                {
                    // 연결 대상과 연결 지점 설정
                    fixedjoint.connectedBody   = simObject.GetComponent <Rigidbody>();
                    fixedjoint.connectedAnchor = new Vector3(0, -1.5f, 0);
                }
            }



            // hingejoint test
            if (enableHingeJoint)
            {
                Transform transform = null;

                // Root2
                SimulationObject Root = model.AddObject();
                if (Root != null)
                {
                    Root.Name = "MyRoot2";

                    transform          = Root.GetComponent <Transform>();
                    transform.Position = new Vector3(0, 0, 0);

                    //add render component
                    meshFilter      = Root.AddComponent <MeshFilter>();
                    meshFilter.mesh = mesh;

                    meshRender          = Root.AddComponent <MeshRenderer>();
                    meshRender.material = material;

                    //add physics component
                    rigidbody      = Root.AddComponent <Rigidbody>();
                    rigidbody.mass = 0;

                    boxCollider      = Root.AddComponent <BoxCollider>();
                    boxCollider.size = new Vector3(1, 1, 1);
                }

                // simObject2
                simObject      = model.AddObject();
                simObject.Name = "simObject2";


                transform          = simObject.GetComponent <Transform>();
                transform.Position = new Vector3(0, 0, 0);


                //add render component
                meshFilter      = simObject.AddComponent <MeshFilter>();
                meshFilter.mesh = mesh;

                meshRender          = simObject.AddComponent <MeshRenderer>();
                meshRender.material = material;

                //add physics component
                rigidbody = simObject.AddComponent <Rigidbody>();

                boxCollider      = simObject.AddComponent <BoxCollider>();
                boxCollider.size = new Vector3(1, 1, 1);

                HingeJoint hingejoint = null;
                hingejoint = Root.AddComponent <HingeJoint>();
                if (hingejoint != null)
                {
                    // 연결 대상 설정
                    hingejoint.connectedBody = simObject.GetComponent <Rigidbody>();

                    // 연결 지점 설정
                    hingejoint.anchor          = new Vector3(0, 0, 0);
                    hingejoint.connectedAnchor = new Vector3(0, 1.5f, 0);

                    // 회전축 지정
                    hingejoint.axis = new Vector3(0, 0, 1);

                    // 회전 최소/최대각 지정
                    hingejoint.useLimits = true;

                    JointLimits jointlimits = hingejoint.limits;
                    jointlimits.min       = -70 * ((float)Math.PI / 180.0f);
                    jointlimits.max       = 70 * ((float)Math.PI / 180.0f);
                    jointlimits.minBounce = 1.0f;
                    jointlimits.maxBounce = 1.0f;
                    hingejoint.limits     = jointlimits;
                }
            }



            // characterjoint test
            if (enableCharacterJoint)
            {
                Transform transform = null;

                // Root3
                SimulationObject Root = model.AddObject();
                if (Root != null)
                {
                    Root.Name = "MyRoot3";

                    transform          = Root.GetComponent <Transform>();
                    transform.Position = new Vector3(5, 0, 0);

                    //add render component
                    meshFilter      = Root.AddComponent <MeshFilter>();
                    meshFilter.mesh = mesh;

                    meshRender          = Root.AddComponent <MeshRenderer>();
                    meshRender.material = material;

                    //add physics component
                    rigidbody      = Root.AddComponent <Rigidbody>();
                    rigidbody.mass = 0;

                    boxCollider      = Root.AddComponent <BoxCollider>();
                    boxCollider.size = new Vector3(1, 1, 1);
                }

                // simObject3
                simObject      = model.AddObject();
                simObject.Name = "simObject3";

                transform          = simObject.GetComponent <Transform>();
                transform.Position = new Vector3(5, 0, 0);

                //add render component
                meshFilter      = simObject.AddComponent <MeshFilter>();
                meshFilter.mesh = mesh;

                meshRender          = simObject.AddComponent <MeshRenderer>();
                meshRender.material = material;

                //add physics component
                rigidbody = simObject.AddComponent <Rigidbody>();

                boxCollider      = simObject.AddComponent <BoxCollider>();
                boxCollider.size = new Vector3(1, 1, 1);

                CharacterJoint characterjoint = null;
                characterjoint = Root.AddComponent <CharacterJoint>();
                if (characterjoint != null)
                {
                    // 연결 대상 설정
                    characterjoint.connectedBody = simObject.GetComponent <Rigidbody>();

                    // 연결 지점 설정
                    characterjoint.anchor          = new Vector3(0, -1.5f, 0);
                    characterjoint.connectedAnchor = new Vector3(0, 1.5f, 0);

                    // 회전축 및 회전 제한각 설정
                    characterjoint.axis = new Vector3(0, 0, 1); // twist&swing axis
                    characterjoint.setLimit(((float)Math.PI) * 0.2f, ((float)Math.PI) * 0.2f, 0);
                }
            }
        }
Ejemplo n.º 9
0
        private void PhysicsScene01()
        {
            SimulationObject simObj      = null;
            Rigidbody        rigidbody   = null;
            BoxCollider      boxCollider = null;

            Mesh[]       meshArray     = RenderAsset.Load("box.gtm", typeof(Mesh)) as Mesh[];
            Material[]   materialArray = RenderAsset.Load("box.gtm", typeof(Material)) as Material[];
            MeshFilter   meshFilter    = null;
            MeshRenderer meshRender    = null;

            Mesh     mesh     = meshArray[0];
            Material material = materialArray[0];

            Shader shader = new Shader();

            material.Shader = shader;


            // static body
            {
                simObj      = model.AddObject();
                simObj.Name = "GroundObj";

                Transform transform = simObj.GetComponent <Transform>();
                transform.Position   = new Vector3(0, -1, 0);
                transform.LocalScale = new Vector3(50, 0.1f, 50);

                //add render component
                meshFilter      = simObj.AddComponent <MeshFilter>();
                meshFilter.mesh = mesh;

                meshRender          = simObj.AddComponent <MeshRenderer>();
                meshRender.material = material;

                //add physics component
                rigidbody      = simObj.AddComponent <Rigidbody>();
                rigidbody.mass = 0;

                boxCollider      = simObj.AddComponent <BoxCollider>();
                boxCollider.size = new Vector3(1, 1, 1);
            }


            // dynamic body
            for (int i = 0; i < 10; i++)
            {
                simObj = model.AddObject();
                if (simObj != null)
                {
                    simObj.Name = "simObj" + i;

                    Transform transform = simObj.GetComponent <Transform>();
                    transform.Position = new Vector3(0, 20, 0);

                    //add render component
                    meshFilter      = simObj.AddComponent <MeshFilter>();
                    meshFilter.mesh = mesh;

                    meshRender          = simObj.AddComponent <MeshRenderer>();
                    meshRender.material = material;

                    //add physics component
                    rigidbody = simObj.AddComponent <Rigidbody>();
                    rigidbody.detectCollisions = false; // 충돌 이벤트 발생 하지 않음

                    boxCollider      = simObj.AddComponent <BoxCollider>();
                    boxCollider.size = new Vector3(1, 1, 1);
                }
            }
        }
Ejemplo n.º 10
0
        private void createObjects()
        {
            //Create Render Components_1
            SimulationObject testObject = model.AddObject();

            testObject.Name = "testObj";

            Transform transform_test = testObject.GetComponent <Transform>();

            transform_test.Position = new Vector3(0.0f, 0.0f, 0.0f);

            MeshFilter meshfilter_test = testObject.AddComponent <MeshFilter>();

            meshfilter_test.mesh = new Mesh("filepath", "Mesh");

            Material material_test = new Material(new Shader("filepath"));

            material_test.MainTexture = new Texture2D("filepath");
            material_test.Color       = new Vector4(1.0f, 0.0f, 0.0f, 1.0f);

            MeshRenderer meshrenderer = testObject.AddComponent <MeshRenderer>();

            meshrenderer.material = material_test;

            //Create Render Components_2
            SimulationObject testObject_2 = model.AddObject();

            testObject_2.Name = "testObj_2";

            Transform transform_test_2 = testObject_2.GetComponent <Transform>();

            transform_test_2.Position = new Vector3(0.0f, 0.0f, 0.0f);

            MeshFilter meshfilter_test_2 = testObject_2.AddComponent <MeshFilter>();

            meshfilter_test_2.mesh = new Mesh("filepath", "Mesh");

            Material material_test_2 = new Material(new Shader("filepath"));

            material_test_2.MainTexture = new Texture2D("filepath");
            material_test_2.Color       = new Vector4(1.0f, 0.0f, 0.0f, 1.0f);

            MeshRenderer meshrenderer_2 = testObject_2.AddComponent <MeshRenderer>();

            meshrenderer_2.material = material_test_2;

            //Create Camera Components
            SimulationObject cameraObject = model.AddObject();

            cameraObject.Name = "cameraObj";

            Transform transform_camera = cameraObject.GetComponent <Transform>();

            transform_camera.Position = new Vector3(0.0f, 0.0f, 0.0f);

            ETE.Render.Component.Camera comp_camera = cameraObject.AddComponent <ETE.Render.Component.Camera>();
            //comp_camera.Root = testObject;
            comp_camera.TargetDisplay    = 0; //아직 EGL 개발되지않음
            comp_camera.BackGround_Color = new Vector4(1.0f, 0.0f, 0.0f, 1.0f);
            comp_camera.CameraOrder      = 0;
        }
Ejemplo n.º 11
0
        private void createModel()
        {
            //-----------------------------------
            //scene에서 사용할 모든 GTM 파일을 적으세요
            //mesh & material pool 구성
            if (RenderAsset.getRenderAsset() != null)
            {
                // 객체 로드
                RenderAsset.Load("tidus/tidus.gtm", typeof(Mesh));
                RenderAsset.Load("tidus/tidus.gtm", typeof(Material));
                RenderAsset.Load("shader/lighting.sh", typeof(Shader));

                //RenderAsset.Load("tidus/tidus.gtm", typeof(Mesh));
                //RenderAsset.Load("tidus/tidus.gtm", typeof(Material));
                //RenderAsset.Load("shader/lighting.sh", typeof(Shader));

                // 데이터 취득
                Mesh[]     meshArray     = RenderAsset.GetObjectsOfTypeAll(typeof(Mesh)) as Mesh[];
                Material[] materialArray = RenderAsset.GetObjectsOfTypeAll(typeof(Material)) as Material[];
                Shader[]   shaderArray   = RenderAsset.GetObjectsOfTypeAll(typeof(Shader)) as Shader[];

                // Create Model(Create Mesh by Model)
                int meshLength = meshArray.GetLength(0);

                for (int i = 0; i < meshLength; ++i)
                {
                    SimulationObject testObject = model.AddObject();
                    testObject.Name = meshArray[i].getMeshName() + "_Node";

                    Transform transform_test = testObject.GetComponent <Transform>();
                    transform_test.Position = new Vector3(0.0f, 0.0f, 0.0f);

                    MeshFilter meshfilter_test = testObject.AddComponent <MeshFilter>();
                    meshfilter_test.mesh = meshArray[i];

                    Material material_test = materialArray[i];
                    material_test.Shader = shaderArray[0];

                    MeshRenderer meshrenderer = testObject.AddComponent <MeshRenderer>();
                    meshrenderer.material = material_test;

                    //UserControl은 단순히 모델을 회전시켜주는 역할을 합니다.
                    UserControl.MeshControl mc = testObject.AddComponent <UserControl.MeshControl>();
                }

                // Create Cube(Create Mesh by Script)
                SimulationObject CubeObject = model.AddObject();
                CubeObject.Name = "CreateMesh_Test";

                Transform transform_Cube = CubeObject.GetComponent <Transform>();
                transform_Cube.Position = new Vector3(0.0f, 0.0f, 0.0f);

                UserControl.CreateMesh cm = CubeObject.AddComponent <UserControl.CreateMesh>();

                // Create Camera
                // 현재 있는 View 개수만큼 Camera를 생성합니다.
                int[] targetNumbers = ETE.Render.EGL.GLUserControlManager.Instance.getTargetNumbers();
                foreach (int targetnumber in targetNumbers)
                {
                    SimulationObject cameraObject = SimulationApplication.Instance.getModel().AddObject();
                    cameraObject.Name = "cameraObj";

                    ETE.Render.Component.Camera comp_camera = cameraObject.AddComponent <ETE.Render.Component.Camera>();
                    comp_camera.TargetDisplay    = targetnumber;
                    comp_camera.BackGround_Color = new Vector4(0.2f, 0.2f, 0.4f, 1.0f);
                    comp_camera.CameraOrder      = 0;
                    comp_camera.Near             = 2.0f;
                    comp_camera.Far          = 10000.0f;
                    comp_camera.FOV          = 35.0f;
                    comp_camera.Aspect_Ratio = 1.7021f;

                    // Camera의 위치 설정
                    Transform transform_camera = cameraObject.GetComponent <Transform>();
                    if (targetnumber == 0)
                    {
                        transform_camera.Position    = new Vector3(0.0f, 40.0f, 250.0f);
                        transform_camera.EulerAngles = new Vector3(0.0f, 0.0f, 0.0f);
                    }
                    else if (targetnumber == 1)
                    {
                        transform_camera.Position    = new Vector3(0.0f, 250.0f, 0.0f);
                        transform_camera.EulerAngles = new Vector3(-90.0f, 0.0f, 0.0f);
                    }
                    else if (targetnumber == 2)
                    {
                        transform_camera.Position    = new Vector3(250.0f, 40.0f, 0.0f);
                        transform_camera.EulerAngles = new Vector3(0.0f, 90.0f, 0.0f);
                    }
                    else if (targetnumber == 3)
                    {
                        transform_camera.Position    = new Vector3(130.0f, 200.0f, 130.0f);
                        transform_camera.EulerAngles = new Vector3(-45.0f, 45.0f, 0.0f);
                    }
                }
            }
        }