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); }
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); }
// 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)); }