por favor dígame cómo cortar una figura en un plano en 2 partes, algo como en la imagen
Traté de hacer como en este enlace, pero no funcionó, tal vez alguien más te diga cómo puedes dividir la figura en 2 partesTres JS - ¿Cómo cortar un objeto 3D con el plano Y?
Hay dos maneras de hacer esto:
Primero, active los planos de recorte locales. Esto le permitirá recortar una malla sin afectar a otra malla.
const renderer = new WebGLRenderer() renderer.localClippingEnabled = true A continuación, clone la malla. Idealmente, crearía una instancia de Mesh , pero la idea es que tenga una copia de la forma. ADEMÁS, clone y fije el material de la copia.
let clonedMesh = yourMesh.clone() clonedMesh.material = clonedMesh.material.clone() Ahora, desea crear dos planos de recorte, "mirando" en direcciones opuestas, y establecer uno en su malla original y el otro en el clon. Esto se hace a través del Material (razón por la cual necesitabas un clon y no una referencia). (Nota: los puntos normales en la dirección en la que el plano de recorte MANTENDRÁ visible).
let localPosition = new Vector3() let normal = new Vector3(0, 1, 0) // +Y as an example let clipPlane1 = new Plane().setFromNormalAndCoplanarPoint( normal, localPosition ) normal.negate() // flips the normal let clipPlane2 = new Plane().setFromNormalAndCoplanarPoint( normal, localPosition ) originalMesh.material.clippingPlanes = [ clipPlane1 ] clonedMesh.material.clippingPlanes = [ clipPlane2 ]Ahora, cuando renderice, las dos formas se recortarán en diferentes direcciones, exponiendo solo su "lado" de la forma cortada. Debido a que son locales para cada forma, puede transformar la forma y el plano de recorte para esa forma lo seguirá.
Este es un tema mucho más amplio, y no voy a entrar en detalles. La idea general es que tienes un plano que interseca tu geometría. Si un triángulo en su geometría se cruza con el plano, entonces debe reemplazarlo con nuevos triángulos de modo que sus bordes queden EN el plano, en lugar de atravesarlo. Realizaría esta operación en ambas direcciones, creando dos zonas de influencia geométricas distintas, que tendrían que asignarse a Mesh distintas.
Es probable que existan herramientas compatibles con three.js que puedan realizar estas operaciones por usted. Desafortunadamente, no conozco ninguno en la parte superior de mi cabeza.