Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

236
Visualizações
Personalice los bordes de PlaneGeometry para cada segmento en ThreeJS

Actualmente, PlaneGeometry tiene una opción para cambiar el ancho y la altura del segmento, pero esto no tiene efecto en los bordes . Actualmente, cada segmento tiene posiciones indexadas para crear una forma de 'N' al ver la geometría en el modo de estructura alámbrica:

Los índices actualmente son:

  • 0 = Suroeste
  • 1 = Noroeste
  • 2 = Sudeste
  • 3 = Noreste

Esto nos da una forma de 'N' para cada segmento con estructuras alámbricas, sin embargo, en lugar de esta forma de 'N', me gustaría crear una forma de 'X' con bordes para cada segmento. Actualmente estoy usando planos para crear diferentes alturas y tener una forma de 'X' haría que el resultado se viera menos nervioso (capturas de pantalla a continuación).

Creo que ya existen todos los vértices requeridos, pero ¿cómo es posible obtener un borde adicional entre el punto 0 y el 3 para cada segmento?

Intenté buscar la respuesta en línea, pero no pude encontrar una respuesta clara sobre este asunto, además, muchos artículos son anteriores a la versión R125 que realizó cambios importantes en Geometrías. Actualmente estoy usando la versión R135.

Supongo que necesitaré crear una geometría de búfer personalizada, pero tengo dudas sobre cómo ejecutar esto correctamente y no perder demasiado rendimiento.

Actual

Bordes deseados

  • Todas las líneas rojas y azules son bordes existentes actualmente en el modo de estructura alámbrica.
  • Todas las líneas verdes son deseadas y actualmente no existen, ¿cuál sería la mejor manera de hacer esto sin perder rendimiento?

¡Gracias por adelantado!

about 4 years ago · Juan Pablo Isaza
1 Respostas
Responde à pergunta

0

Me tomó una buena cantidad de intentos, pero al final no resultó ser demasiado difícil. Creé esta PlaneGeometry personalizada creando una BufferGeometry personalizada. Aunque probablemente sea 3 veces más pesado de usar;

Por el momento, tiene 36 (12 * 3) posiciones por segmento de mosaico, mientras que PlaneGeometry predeterminado tiene 12 (4 * 3) posiciones. Aunque no estoy seguro de si 3 veces más posiciones significa automáticamente 3 veces más uso de rendimiento, definitivamente usa más que la PlaneGeometry predeterminada.

Aquí están los resultados (los cambios en la altura suavizan más bonito):

Cambios de altura de geometría deseados

Código para crear la geometría:

 const geometry = new THREE.BufferGeometry(); const vertices = new Float32Array([ // (North Face) .5, -.5, 0, // 0: Center 1, -1, 0, // 1: NE 1, 0, 0, // 2: NW // (East Face) .5, -.5, 0, // 3: Center 0, -1, 0, // 4: SE 1, -1, 0, // 5: NE // (South Face) .5, -.5, 0, // 6: Center 0, 0, 0, // 7: SW 0, -1, 0, // 8: SE // (West Face) .5, -.5, 0, // 9: Center 1, 0, 0, // 10: NW 0, 0, 0, // 11: SW ]); geometry.setAttribute( 'position', new THREE.BufferAttribute( vertices, 3 ) ); const material = new THREE.MeshBasicMaterial( { color: 0xffffff, wireframe: true } ); const mesh = new THREE.Mesh( geometry, material ); mesh.rotation.x = - Math.PI / 2; scene.add( mesh );
about 4 years ago · Juan Pablo Isaza Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda