/// <summary> /// Calcula el BoundingBox de la malla, en base a todos sus vertices. /// Llamar a este metodo cuando ha cambiado la estructura interna de la malla. /// </summary> public TgcBoundingBox createBoundingBox() { //Obtener vertices en base al tipo de malla Vector3[] points = getVertexPositions(); this.boundingBox = TgcBoundingBox.computeFromPoints(points); return(this.boundingBox); }
public override void init() { Microsoft.DirectX.Direct3D.Device d3dDevice = GuiController.Instance.D3dDevice; //Cuerpo principal que se controla con el teclado box = TgcBox.fromSize(new Vector3(0, 10, 0), new Vector3(10, 10, 10), Color.Blue); //triangulo triangle = new CustomVertex.PositionColored[3]; triangle[0] = new CustomVertex.PositionColored(-100, 0, 0, Color.Red.ToArgb()); triangle[1] = new CustomVertex.PositionColored(0, 0, 50, Color.Green.ToArgb()); triangle[2] = new CustomVertex.PositionColored(0, 100, 0, Color.Blue.ToArgb()); triagleAABB = TgcBoundingBox.computeFromPoints(new Vector3[] { triangle[0].Position, triangle[1].Position, triangle[2].Position }); //box2 box2 = TgcBox.fromSize(new Vector3(-50, 10, -20), new Vector3(15, 15, 15), Color.Violet); //sphere sphere = new TgcBoundingSphere(new Vector3(30, 20, -20), 15); //OBB: computar OBB a partir del AABB del mesh. TgcSceneLoader loader = new TgcSceneLoader(); TgcMesh meshObb = loader.loadSceneFromFile(GuiController.Instance.ExamplesMediaDir + "MeshCreator\\Meshes\\Vehiculos\\StarWars-ATST\\StarWars-ATST-TgcScene.xml").Meshes[0]; obb = TgcObb.computeFromAABB(meshObb.BoundingBox); meshObb.dispose(); obb.move(new Vector3(100, 0, 30)); obb.setRotation(new Vector3(0, FastMath.PI / 4, 0)); //Configurar camara en Tercer Persona GuiController.Instance.ThirdPersonCamera.Enable = true; GuiController.Instance.ThirdPersonCamera.setCamera(box.Position, 30, -75); }
/// <summary> /// Calcula el BoundingBox de la malla, en base a todos sus vertices. /// Llamar a este metodo cuando ha cambiado la estructura interna de la malla. /// </summary> public TgcBoundingBox createBoundingBox() { if (boundingBox != null) { boundingBox.dispose(); boundingBox = null; } //Obtener vertices en base al tipo de malla var points = getVertexPositions(); boundingBox = TgcBoundingBox.computeFromPoints(points); return(boundingBox); }
/// <summary> /// Crear BoundingBox a partir de un conjunto de primitivas /// </summary> /// <param name="list">primitivas</param> /// <returns>BoundingBox</returns> public static TgcBoundingBox getSelectionBoundingBox(List <EditPolyPrimitive> primitives) { if (primitives.Count == 0) { return(null); } Vector3[] vertices = new Vector3[primitives.Count]; for (int i = 0; i < primitives.Count; i++) { vertices[i] = primitives[i].computeCenter(); } return(TgcBoundingBox.computeFromPoints(vertices)); }
public override void Init() { //Cuerpo principal que se controla con el teclado box = TgcBox.fromSize(new Vector3(0, 10, 0), new Vector3(10, 10, 10), Color.Blue); //triangulo triangle = new CustomVertex.PositionColored[3]; triangle[0] = new CustomVertex.PositionColored(-100, 0, 0, Color.Red.ToArgb()); triangle[1] = new CustomVertex.PositionColored(0, 0, 50, Color.Green.ToArgb()); triangle[2] = new CustomVertex.PositionColored(0, 100, 0, Color.Blue.ToArgb()); triagleAABB = TgcBoundingBox.computeFromPoints(new[] { triangle[0].Position, triangle[1].Position, triangle[2].Position }); //box2 box2 = TgcBox.fromSize(new Vector3(-50, 10, -20), new Vector3(15, 15, 15), Color.Violet); //sphere sphere = new TgcBoundingSphere(new Vector3(30, 20, -20), 15); //OBB: computar OBB a partir del AABB del mesh. var loader = new TgcSceneLoader(); var meshObb = loader.loadSceneFromFile(MediaDir + "MeshCreator\\Meshes\\Vehiculos\\StarWars-ATST\\StarWars-ATST-TgcScene.xml") .Meshes[0]; obb = TgcObb.computeFromAABB(meshObb.BoundingBox); meshObb.dispose(); obb.move(new Vector3(100, 0, 30)); obb.setRotation(new Vector3(0, FastMath.PI / 4, 0)); //Configurar camara en Tercer Persona camaraInterna = new TgcThirdPersonCamera(box.Position, 30, -75); Camara = camaraInterna; }