public override void Render() { PreRender(); //Obtener boolean para saber si hay que mostrar Bounding Box var showBB = showBoundingBoxModifier.Value; if (collisionManager.Collision) { collisionNormalArrow.Render(); collisionPoint.Render(); } //Render de mallas foreach (var mesh in escenario.Meshes) { mesh.Render(); } //Render personaje personaje.animateAndRender(ElapsedTime); if (showBB) { characterSphere.Render(); } //Render linea directionArrow.Render(); //Render SkyBox skyBox.Render(); PostRender(); }
public override void Render() { PreRender(); //Dibujar todo. //Una vez actualizadas las diferentes posiciones internas solo debemos asignar la matriz de world. mesh.Transform = TGCMatrix.Scaling(mesh.Scale) * TGCMatrix.RotationYawPitchRoll(mesh.Rotation.Y, mesh.Rotation.X, mesh.Rotation.Z) * TGCMatrix.Translation(mesh.Position); mesh.Render(); //Actualmente los bounding box se actualizan solos en momento de hacer render, esto no es recomendado ya que trae overhead //Igualmente aqui podemos tener un objeto debug de nuestro mesh. mesh.BoundingBox.Render(); box2.Transform = TGCMatrix.Scaling(box2.Scale) * TGCMatrix.RotationYawPitchRoll(box2.Rotation.Y, box2.Rotation.X, box2.Rotation.Z) * TGCMatrix.Translation(box2.Position); box2.Render(); //Los bounding volume por la forma actual de framework no realizan transformaciones entonces podemos hacer esto: //D3DDevice.Instance.Device.Transform.World = // TGCMatrix.Scaling(new TGCVector3(sphere.Radius, sphere.Radius, sphere.Radius)) // * TGCMatrix.Identity //No tienen sentido las rotaciones con la esfera. // * TGCMatrix.Translation(sphere.Position); boundingSphere.Render(); //Las mesh por defecto tienen el metodo UpdateMeshTransform que realiza el set por defecto. //Esto es igual que utilizar AutoTransform en true, con lo cual no es recomendado para casos complejos. meshObb.UpdateMeshTransform(); meshObb.Render(); //La implementacion de Obb por el momento reconstruye el obb debug siempre. Practica no recomendada. obb.Render(); //triangulo D3DDevice.Instance.Device.Transform.World = TGCMatrix.Identity.ToMatrix(); D3DDevice.Instance.Device.VertexFormat = CustomVertex.PositionColored.Format; D3DDevice.Instance.Device.DrawUserPrimitives(PrimitiveType.TriangleList, 1, triangle); PostRender(); }
public override void Render() { PreRender(); //Bounding volumes. //Los bounding volumes realizan un update de los vertices en momento de render, por ello pueden ser mas lentos que utilizar transformadas. if (fixedYModifier.Value) { colliderCylinderFixedY.Render(); } else { colliderCylinder.Render(); } //Render personaje personaje.Transform = TGCMatrix.Scaling(personaje.Scale) * TGCMatrix.RotationYawPitchRoll(personaje.Rotation.Y, personaje.Rotation.X, personaje.Rotation.Z) * TGCMatrix.Translation(personaje.Position); personaje.animateAndRender(ElapsedTime); if (fixedYModifier.Value) { personaje.BoundingBox.Render(); } //Render de objetos estaticos collisionableSphere.Render(); collisionableMeshAABB.BoundingBox.Render(); collisionableCylinder.Render(); //Dibujar todo mallas. //Una vez actualizadas las diferentes posiciones internas solo debemos asignar la matriz de world. collisionableMeshAABB.Transform = TGCMatrix.Scaling(collisionableMeshAABB.Scale) * TGCMatrix.Translation(collisionableMeshAABB.Position); collisionableMeshAABB.Render(); PostRender(); }
public override void Render() { PreRender(); //Obtener boolean para saber si hay que mostrar Bounding Box var showBB = showBoundingBoxModifier.Value; //Render mallas que no se interponen foreach (var mesh in objectsInFront) { mesh.Render(); if (showBB) { mesh.BoundingBox.Render(); } } //Para las mallas que se interponen a la cámara, solo renderizar su BoundingBox foreach (var mesh in objectsBehind) { mesh.BoundingBox.Render(); } //Render personaje personaje.animateAndRender(ElapsedTime); if (showBB) { characterSphere.Render(); } //Render linea directionArrow.Render(); //Render SkyBox skyBox.Render(); PostRender(); }
public override void Render() { PreRender(); //Dibujar todo. //Una vez actualizadas las diferentes posiciones internas solo debemos asignar la matriz de world. mesh.Transform = TGCMatrix.Scaling(mesh.Scale) * TGCMatrix.RotationYawPitchRoll(mesh.Rotation.Y, mesh.Rotation.X, mesh.Rotation.Z) * TGCMatrix.Translation(mesh.Position); mesh.Render(); //Actualmente los bounding box se actualizan solos en momento de hacer render, esto no es recomendado ya que trae overhead //Igualmente aqui podemos tener un objeto debug de nuestro mesh. mesh.BoundingBox.Render(); box2.Transform = TGCMatrix.Scaling(box2.Scale) * TGCMatrix.RotationYawPitchRoll(box2.Rotation.Y, box2.Rotation.X, box2.Rotation.Z) * TGCMatrix.Translation(box2.Position); box2.Render(); boundingSphere.Render(); //Las mesh por defecto tienen el metodo UpdateMeshTransform que realiza el set por defecto. meshObb.Transform = TGCMatrix.Scaling(meshObb.Scale) * TGCMatrix.RotationYawPitchRoll(meshObb.Rotation.Y, meshObb.Rotation.X, meshObb.Rotation.Z) * TGCMatrix.Translation(meshObb.Position); meshObb.Render(); //La implementacion de Obb por el momento reconstruye el obb debug siempre. Practica no recomendada. obb.Render(); //triangulo D3DDevice.Instance.Device.Transform.World = TGCMatrix.Identity.ToMatrix(); D3DDevice.Instance.Device.VertexFormat = CustomVertex.PositionColored.Format; D3DDevice.Instance.Device.DrawUserPrimitives(PrimitiveType.TriangleList, 1, triangle); PostRender(); }