コード例 #1
0
        void InitCamera()
        {
            var camera       = Scene.CameraEditor.Value;
            var bounds       = ObjectInSpace.SpaceBounds.CalculatedBoundingBox;
            var cameraLookTo = bounds.GetCenter();

            double maxGararite = Math.Max(Math.Max(bounds.GetSize().X, bounds.GetSize().Y), bounds.GetSize().Z);
            double distance    = maxGararite * 2;

            if (distance < 2)
            {
                distance = 2;
            }

            double             cameraZoomFactor = 1;
            SphericalDirection cameraDirection  = new SphericalDirection(-3.83, -.47);

            var cameraPosition = cameraLookTo - cameraDirection.GetVector() * distance * cameraZoomFactor;
            var center         = cameraLookTo;

            Vector3 from = cameraPosition;
            Vector3 to   = center;
            Degree  fov  = 65;

            camera.FieldOfView   = fov;
            camera.NearClipPlane = Math.Max(distance / 10000, 0.01);
            camera.FarClipPlane  = Math.Max(1000, distance * 2);

            camera.Transform = new Transform(from, Quaternion.LookAt((to - from).GetNormalize(), Vector3.ZAxis));
            camera.FixedUp   = Vector3.ZAxis;
        }
コード例 #2
0
        protected override void OnCreate()
        {
            base.OnCreate();

            var scene = CreateScene(false);

            Component_Mesh mesh = ObjectOfPreview as Component_Mesh;

            if (mesh != null)
            {
                Component_MeshInSpace objInSpace = scene.CreateComponent <Component_MeshInSpace>();
                objInSpace.Mesh = mesh;
            }

            scene.Enabled = true;

            SetCameraByBounds(scene.CalculateTotalBoundsOfObjectsInSpace());

            if (mesh.EditorCameraTransform != null)
            {
                var tr = mesh.EditorCameraTransform;
                CameraInitialDistance = (tr.Position - CameraLookTo).Length();
                CameraDirection       = SphericalDirection.FromVector(CameraLookTo - tr.Position);
            }
        }
コード例 #3
0
        void InitCamera(double distanceScale = 1)
        {
            var camera       = Scene.CameraEditor.Value;
            var bounds       = Scene.CalculateTotalBoundsOfObjectsInSpace();
            var cameraLookTo = bounds.GetCenter();

            double maxGararite = Math.Max(Math.Max(bounds.GetSize().X, bounds.GetSize().Y), bounds.GetSize().Z);
            double distance    = maxGararite * 2 * distanceScale;         // 2.3;

            if (distance < 2)
            {
                distance = 2;
            }

            double             cameraZoomFactor = 1;
            SphericalDirection cameraDirection  = new SphericalDirection(-3.83, -.47);

            var cameraPosition = cameraLookTo - cameraDirection.GetVector() * distance * cameraZoomFactor;
            var center         = cameraLookTo; // GetSceneCenter();

            Vector3 from = cameraPosition;     //center + cameraDirection.GetVector() * cameraDistance;
            Vector3 to   = center;
            Degree  fov  = 65;                 // 75;

            //!!!!
            //camera.AspectRatio = (double)ViewportControl.Viewport.SizeInPixels.X / (double)ViewportControl.Viewport.SizeInPixels.Y;
            camera.FieldOfView   = fov;
            camera.NearClipPlane = Math.Max(distance / 10000, 0.01);              //.1;
            camera.FarClipPlane  = Math.Max(1000, distance * 2);

            camera.Transform = new Transform(from, Quaternion.LookAt((to - from).GetNormalize(), Vector3.ZAxis));
            camera.FixedUp   = Vector3.ZAxis;
        }
コード例 #4
0
        protected override void OnLoad(EventArgs e)
        {
            base.OnLoad(e);

            if (Skybox != null)
            {
                var scene = CreateScene(false);
                CreateObject();
                scene.Enabled = true;

                CameraDirection = new SphericalDirection(0, 0);
            }
        }
コード例 #5
0
        protected override void Update()
        {
            var scene = CreateScene(false);

            if (Skybox != null)
            {
                var instanceInScene = (Component_Skybox)Skybox.Clone();
                Scene.AddComponent(instanceInScene);

                CameraDirection = new SphericalDirection(0, 0);
            }

            scene.Enabled = true;
        }
コード例 #6
0
        //

        protected override void OnCreate()
        {
            base.OnCreate();

            CreateScene(false);
            UpdateDisplayObject();
            Scene.Enabled = true;
            SetCameraByBounds(Scene.CalculateTotalBoundsOfObjectsInSpace());

            var import = ObjectOfPreview as Component_Import3D;
            var mesh   = import?.GetComponent("Mesh") as Component_Mesh;

            if (mesh != null && mesh.EditorCameraTransform != null)
            {
                var tr = mesh.EditorCameraTransform;
                CameraInitialDistance = (tr.Position - CameraLookTo).Length();
                CameraDirection       = SphericalDirection.FromVector(CameraLookTo - tr.Position);
            }
        }
コード例 #7
0
        protected override void Update()
        {
            CreateScene(false);

            var import = ObjectOfPreview as Component_Import3D;

            if (import != null)
            {
                import.CreateForPreviewDisplay(Scene, out _, out _);
            }

            Scene.Enabled = true;

            SetCameraByBounds(Scene.CalculateTotalBoundsOfObjectsInSpace(), 2.6);              // 1.7 );

            var mesh = import.GetComponent("Mesh") as Component_Mesh;

            if (mesh != null && mesh.EditorCameraTransform != null)
            {
                var tr = mesh.EditorCameraTransform;
                CameraDistance  = (tr.Position - CameraLookTo).Length();
                CameraDirection = SphericalDirection.FromVector(CameraLookTo - tr.Position);
            }
        }