Inheritance: MonoBehaviour
        public Model(string modelPath) : base()
        {
            var loader = new ObjModelLoader(modelPath);

            _material = loader.Materials["Default"]; // TODO

            _texture = new Texture(_material.AmbientTextureMap);
            SetupBuffers(loader.Mesh);
        }
Exemple #2
0
        static void Main(string[] args)
        {
            //Convert skybox texture.
            {
                SoftwareImage <R32G32B32A32F> image = HdrImageLoader.Read(TestSceneResource("473-free-hdri-skies-com.hdr"));
                {
                    var cubeImages = new SkyboxUniformCircleFilter <R32G32B32A32F>(image).Generate(32);
                    SoftwareImage <R32G32B32A32F> .WriteSRDFileCube(TestSceneCompiled("sphere_cube_specular.srd"), cubeImages);
                }
                {
                    var s1 = new HalfSize <R32G32B32A32F>(image).Generate();
                    s1    = new HalfSize <R32G32B32A32F>(s1).Generate();
                    s1    = new HalfSize <R32G32B32A32F>(s1).Generate();
                    s1    = new HalfSize <R32G32B32A32F>(s1).Generate();
                    s1    = new HalfSize <R32G32B32A32F>(s1).Generate();
                    image = s1;
                }
                image.WriteSRDFile(TestSceneCompiled("473-free-hdri-skies-com.srd"));
                {
                    var cubeImages = new SkyboxLambertianDiffuseFilter <R32G32B32A32F>(image).Generate(16, 64);
                    for (int i = 0; i < 6; ++i)
                    {
                        cubeImages[i] = new HalfSize <R32G32B32A32F>(cubeImages[i]).Generate();
                        cubeImages[i] = new HalfSize <R32G32B32A32F>(cubeImages[i]).Generate();
                    }
                    SoftwareImage <R32G32B32A32F> .WriteSRDFileCube(TestSceneCompiled("sphere_cube_diffuse.srd"), cubeImages);
                }
            }

            //Generate model.
            {
                var model = Sphere.Generate();
                model.WriteSRD(TestSceneCompiled("sphere.vb"), TestSceneCompiled("sphere.ib"));
            }
            {
                var model = ObjModelLoader.Load(TestSceneResource("bunny.obj.dat"));
                SwapModelCoordinate.SwapXZ(model);
                model.WriteSRD(TestSceneCompiled("bunny.vb"), TestSceneCompiled("bunny.ib"));
            }
        }
Exemple #3
0
        public void CreateControllerModel(string objName, InteractionManager.ControllerConfig mControllerConfig)
        {
            string objPath = mControllerConfig.objPath;

            if (objPath == null)
            {
                return;
            }

            DestroyChild(mTransform);

            GameObject      go = new GameObject(objName);
            NxrLaserPointer mNxrLaserPointer = go.AddComponent <NxrLaserPointer>();

            mNxrLaserPointer.deviceType = NxrInstantNativeApi.NibiruDeviceType.RightController;
            go.transform.SetParent(transform);
            go.transform.localScale    = Vector3.one;
            go.transform.localPosition = new Vector3(0, 0, 0);
            go.transform.localRotation = new Quaternion(0, 0, 0, 1);

            GameObject modelGOParent = new GameObject("model_P");

            modelGOParent.transform.SetParent(go.transform);
            modelGOParent.transform.localScale    = new Vector3(-1, 1, 1);
            modelGOParent.transform.localPosition = new Vector3(0, 0, 0);
            modelGOParent.transform.localRotation = new Quaternion(0, 0, 0, 1);

            GameObject modelGO = new GameObject("model");

            modelGO.transform.SetParent(modelGOParent.transform);
            modelGO.transform.localScale = new Vector3(mControllerConfig.modelScale[0]
                                                       , mControllerConfig.modelScale[1], mControllerConfig.modelScale[2]);
            modelGO.transform.localRotation = Quaternion.Euler(mControllerConfig.modelRotation[0],
                                                               mControllerConfig.modelRotation[1], mControllerConfig.modelRotation[2]);
            modelGO.transform.localPosition = new Vector3(mControllerConfig.modelPosition[0]
                                                          , mControllerConfig.modelPosition[1], mControllerConfig.modelPosition[2]);

            //  string objPath = "/system/etc/Objs/housing_bott.obj";
            Debug.Log("objPath=" + objPath);

            ObjModelLoader mObjModelLoader = GetComponent <ObjModelLoader>();

            if (mObjModelLoader == null)
            {
                gameObject.AddComponent <ObjMaterial>();
                mObjModelLoader = gameObject.AddComponent <ObjModelLoader>();
            }

            mObjModelLoader.LoadObjFile(objPath, modelGO.transform);

            GameObject powerGO = new GameObject("Power");

            powerGO.transform.SetParent(go.transform);

            MeshRenderer powerMeshRenderer = powerGO.AddComponent <MeshRenderer>();
            Mesh         quadMesh          = new Mesh();

            quadMesh.name = "QUAD";
            float quadSize = 0.5f;

            quadMesh.vertices = new Vector3[]
            {
                new Vector3(-1 * quadSize, -1 * quadSize, 0),
                new Vector3(-1 * quadSize, 1 * quadSize, 0),
                new Vector3(1 * quadSize, 1 * quadSize, 0),
                new Vector3(1 * quadSize, -1 * quadSize, 0)
            };
            quadMesh.uv = new Vector2[]
            {
                new Vector2(0, 0),
                new Vector2(0, 1),
                new Vector2(1, 1),
                new Vector2(1, 0)
            };
            int[] triangles = { 0, 1, 2, 0, 2, 3 };
            quadMesh.triangles = triangles;

            powerGO.AddComponent <MeshFilter>().mesh = quadMesh;
            powerGO.AddComponent <MeshCollider>();
            powerGO.AddComponent <NibiruControllerPower>();

            powerGO.transform.localPosition = new Vector3(mControllerConfig.batteryPosition[0],
                                                          mControllerConfig.batteryPosition[1]
                                                          , mControllerConfig.batteryPosition[2]);
            powerGO.transform.localRotation = Quaternion.Euler(mControllerConfig.batteryRotation[0],
                                                               mControllerConfig.batteryRotation[1]
                                                               , mControllerConfig.batteryRotation[2]);
            powerGO.transform.localScale = new Vector3(mControllerConfig.batteryScale[0],
                                                       mControllerConfig.batteryScale[1]
                                                       , mControllerConfig.batteryScale[2]);

            // 射线起点
            mNxrLaserPointer.SetHolderLocalPosition(new Vector3(mControllerConfig.rayStartPosition[0],
                                                                mControllerConfig.rayStartPosition[1],
                                                                mControllerConfig.rayStartPosition[2]));

            NxrTrackedDevice trackedDevice = GetComponent <NxrTrackedDevice>();

            if (trackedDevice != null)
            {
                trackedDevice.ReloadLaserPointer(mNxrLaserPointer);
            }

            //close
            NxrViewer.Instance.SwitchControllerMode(true);
            Debug.Log("HideGaze.ForceUseReticle2");
            CreateControllerTips(go.transform);
        }