Exemplo n.º 1
0
        private void AddGeometryToSceneNode(Geometry geometry, float3 position)
        {
            Geometry newGeo = geometry.CloneGeometry();

            newGeo.Triangulate();
            JometriMesh geometryMesh = new JometriMesh(newGeo);

            SceneNode sceneNodeContainer = new SceneNode {
                Components = new List <SceneComponent>()
            };

            Mesh meshComponent = new Mesh
            {
                Vertices  = geometryMesh.Vertices,
                Triangles = geometryMesh.Triangles,
                Normals   = geometryMesh.Normals,
            };
            Transform translationComponent = new Transform
            {
                Rotation    = float3.Zero,
                Scale       = new float3(1, 1, 1),
                Translation = position
            };

            sceneNodeContainer.Components.Add(translationComponent);
            sceneNodeContainer.Components.Add(MakeEffect.FromDiffuseSpecular(_defaultColor, float4.Zero));
            sceneNodeContainer.Components.Add(meshComponent);

            _parentNode.Children.Add(sceneNodeContainer);
            _activeGeometrys.Add(_parentNode.Children.IndexOf(sceneNodeContainer), geometry);
        }
Exemplo n.º 2
0
        private void AddGeometryToSceneNode(Geometry geometry, float3 position)
        {
            Geometry newGeo = geometry.CloneGeometry();

            newGeo.Triangulate();
            var geometryMesh = new JometriMesh(newGeo);

            var sceneNodeContainer = new SceneNode {
                Components = new List <SceneComponent>()
            };

            var meshComponent = new Mesh
            {
                Vertices  = geometryMesh.Vertices,
                Triangles = geometryMesh.Triangles,
                Normals   = geometryMesh.Normals,
            };
            var translationComponent = new Transform
            {
                Rotation    = float3.Zero,
                Scale       = new float3(1, 1, 1),
                Translation = position
            };
            var shaderEffect = ShaderCodeBuilder.Default;

            shaderEffect.SetEffectParam(UniformNameDeclarations.AlbedoColor, _defaultColor);
            sceneNodeContainer.Components.Add(translationComponent);
            sceneNodeContainer.Components.Add(shaderEffect);
            sceneNodeContainer.Components.Add(meshComponent);

            _parentNode.Children.Add(sceneNodeContainer);
            _activeGeometrys.Add(_parentNode.Children.IndexOf(sceneNodeContainer), geometry);
        }
Exemplo n.º 3
0
        // Init is called on startup.
        public override void Init()
        {
            ////////////////// Fill SceneNodeContainer ////////////////////////////////
            _parentNode = new SceneNode
            {
                Components = new List <SceneComponent>(),
                Children   = new ChildList()
            };

            Transform parentTrans = new Transform
            {
                Rotation    = float3.Zero,
                Scale       = float3.One,
                Translation = new float3(0, 0, 0)
            };

            _parentNode.Components.Add(parentTrans);


            _scene = new SceneContainer {
                Children = new List <SceneNode> {
                    _parentNode
                }
            };

            _renderer    = new SceneRendererForward(_scene);
            _scenePicker = new ScenePicker(_scene);

            //////////////////////////////////////////////////////////////////////////

            RC.ClearColor = new float4(.7f, .7f, .7f, 1);

            _activeGeometrys = new Dictionary <int, Geometry>();

            //Create Geometry
            //Geometry sphere = CreateGeometry.CreateSpehreGeometry(2,22,11);
            //sphere = SubdivisionSurface.CatmullClarkSubdivision(sphere);
            //AddGeometryToSceneNode(sphere, new float3(0,0,0));

            //Geometry cuboid = CreateGeometry.CreateCuboidGeometry(5, 2, 5);
            //AddGeometryToSceneNode(cuboid, new float3(-5,0,0));
        }