Corrija si me equivoco, pero ¿por qué calcular frustum por segunda vez?
Estoy trabajando en un proyecto complejo y la respuesta aceptada no es la mejor solución para mí. No veo el punto de volver a calcular lo que se calculó. Para mi propósito, modifiqué mi copia de three.js levantando una bandera si se detectaba algo en triturado o no. Más adelante simplemente comprobar en su objeto si object.inFrustum === cierto
A continuación siguiendo la línea
if (webglObjects && (object.frustumCulled === false || _frustum.intersectsObject(object) === true)) {
añadir
object.inFrustum = true;
también donde el bloque si extremos añadir una bandera opuesto
else {
object.inFrustum = false;
}
Mi resultado final en r70 que funciona perfectamente:
if (webglObjects && (object.frustumCulled === false || _frustum.intersectsObject(object) === true)) {
object.inFrustum = true; // The line to add
for (var i = 0, l = webglObjects.length; i < l; i ++) {
var webglObject = webglObjects[i];
unrollBufferMaterial(webglObject);
webglObject.render = true;
if (_this.sortObjects === true) {
_vector3.setFromMatrixPosition(object.matrixWorld);
_vector3.applyProjection(_projScreenMatrix);
webglObject.z = _vector3.z;
}
}
} else { // Create second condition like that
object.inFrustum = false;
}
Quiero saber si el tronco contiene un cubo entero, pero no funciona con este método ... ¿qué método puedo usar? (No veo ninguno en la [documentación] (http://threejs.org/docs/#Reference/Math/Frustum)) – CodyBugstein
Puede tomar una instantánea de lienzo del objeto en ese momento para obtener un perspectiva plana del objeto. Encuentra las líneas que componen esa instantánea de polígono. Ya sabes las coordenadas de las cámaras frutum matrix. Ahora tiene un polígono dentro o fuera/superposición de otro polígono. Utilice un algoritmo de detección "Polígono en el polígono", también conocido como algoritmo de línea de barrido para obtener lo que necesita. –