Javafx: añadir un objeto de malla a un mundo 3d

Los objetos que se pueden añadir más simplemente a su mundo virtual de JavaFX se crean usando las tres clases incorporadas de forma 3D que vienen con JavaFX: Cilindro, Caja, y Esfera. Para los objetos más complejos, se debe utilizar el TriangleMesh clase para crear el objeto en base a una serie conectada de triángulos.

Video: Curso modelado Autocad 3D: 04/05 Convertir Sólido - Malla

A continuación, cree uno de los más sencillos de todos los objetos de malla: la pirámide de cuatro lados se muestra aquí. Visualmente, una pirámide de cuatro lados tiene un total de cinco caras: las cuatro caras laterales triangulares y la base cuadrada. Pero en una malla de triángulos JavaFX, las plazas no están permitidos, sólo triángulos. Por lo tanto la pirámide en realidad se compone de seis caras: las cuatro caras laterales triangulares y dos triángulos adyacentes que componen la cara.

En esta sección se presenta información bastante conceptualmente difícil. Si no has estudiado mallas en una clase de gráficos por ordenador, estar preparado para leer los siguientes párrafos varias veces antes de que empiece a tener sentido.

Si aún así no tiene sentido, tomar un café con leche, saca una hoja de papel cuadriculado, y empezar a hacer garabatos. Dibujo la pirámide con su propia mano le ayudará a su comprensión. Trate de usar un lápiz.

Una pirámide cuadrada en JavaFX.

Video: Mallas 3D en AutoCAD. Mallas regladas

Una pirámide cuadrada en JavaFX.

Para obtener la pirámide comenzado, llame al TriangleMesh constructor de la siguiente manera:

TriangleMesh pyramidMesh = new TriangleMesh () -

Para completar la pirámide, es necesario rellenar tres colecciones que definen la geometría de la malla. Estas colecciones tienen los puntos, las caras, y las coordenadas de textura que definen la forma.

Comenzar con la recogida de coordenadas de textura, porque se puede ignorar más o menos por este simple pirámide. Las coordenadas de textura son útiles cuando se está usando un material que contiene una imagen que se debe estirar de una manera específica sobre el marco de la malla. Ellos le permiten asociar un x- específica, coordenada y de la imagen con cada esquina de cada cara.

Por desgracia, no se puede simplemente dejar de lado las coordenadas de textura, incluso si no los necesita, por lo que debe cargar al menos una coordenada. Hacer eso con esta línea de código:

. PyramidMesh.getTexCoords () addAll (0,0) -

Ahora pasar a las otras dos colecciones. La siguiente es una recopilación de la vértices (Es decir, esquinas) que define la forma. Su pirámide cuadrada tiene cinco vértices, que usted puede imaginar que la parte superior, la esquina delantera (el punto más cercano), la esquina izquierda, la esquina trasera, y la esquina derecha. Estos vértices están numerados 0, 1, 2, 3, y 4.

Teniendo en cuenta la altura marido y la longitud s de cada lado de la pirámide, se puede calcular la x, y, z-coordenadas de cada vértice utilizando las siguientes fórmulas:

VérticeEsquinaxYZ
0Parte superior000
1Frente0marido-s / 2
2Izquierda-s / 2marido0
3Espaldas / 2marido0
4Derecha0maridos / 2

Con todo esto como fondo, aquí está el código para crear la colección de puntos:

Video: Tutorial de Freecad (38/40): Importando piezas en STL

flotar h = 150 - // Heightfloat s = 300 -. // SidepyramidMesh.getPoints () addAll (0,0,0, // Point 0 - Top0, h, -s / 2, // Point 1 - Front-s / 2, h, 0, // Point 2 - Lefts / 2, h, 0, // Point 3 - Back0, h, s / 2 // Point 4 - derecha) -

La colección final define las caras. Las caras se definen especificando el índice de cada vértice que compone cada cara. Por ejemplo, la cara delantera izquierda es un triángulo cuyos tres vértices son la parte superior, la parte delantera, y la izquierda. Los índices de estos tres vértices son 0, 2, y 1.

Hay un total de seis triángulos en la pirámide, y sus caras están definidos por los puntos siguientes:

CaraPunto 1El punto 2El punto 3
delantero izquierdo021
Frente derecho013
Atrás derecha034
El lateral izquierdo042
parte inferior trasera412
parte inferior delantera432

Aunque puede que no sea evidente a partir de esta tabla, el orden en el que aparecen las caras es crítica para el éxito de la malla. En general, las caras se enumeran en un sentido antihorario y el orden descendente. Por lo tanto, las cuatro caras laterales se envuelven alrededor de la pirámide con el fin en sentido antihorario. Están seguidos por las dos caras inferiores.

Cada cara de la colección Faces está representada por tres pares de números, cada uno de los cuales representa el índice de uno de los vértices del triángulo y el índice de la textura correspondiente de coordenadas.

Debido a que sólo tiene un elemento de la colección de coordenadas de textura, el segundo número en cada par siempre será cero. Así, la secuencia 0, 0, 2, 0, 1, 0 define la cara delantera izquierda: Los índices de vértice son 0, 2, y 1, y coordinan la textura índices son todos 0.

Aquí está el código para cargar la colección Faces:

pyramidMesh.getFaces (). addAll (0,0, 2,0, 1,0, // delantero izquierdo face0,0, 1,0, 3,0, // face0,0 delantero derecho, 3,0, 4, 0, // face0,0 Atrás derecha, 4,0, 2,0, // face4,0 lateral izquierdo, 1,0, 2,0, // face4,0 parte inferior trasera, 3,0, 1,0 / / cara frontal inferior) - 

Después de las tres colecciones de la malla están listos, el resto del código da cuerpo a la pirámide mediante la adición de un material Phong, traduce la pirámide para conseguir que fuera el centro de la escena, y añade la pirámide a la raíz:

pirámide MeshView = new MeshView (pyramidMesh) -pyramid.setDrawMode (DrawMode.FILL) -pyramid.setMaterial (Bluestuff) -pyramid.setTranslateX (200) -pyramid.setTranslateY (100) -pyramid.setTranslateZ (200) -root.getChildren ( ) .Add (pirámide) -
Artículos Relacionados