Correct me if I'm wrong, but why to calculate frustum second time?
I'm working on a complex project and the accepted answer is not the best solution for me. I see no point of recalculating what aleady was calculated. For my purpose I modified my copy of three.js by raising a flag if something was detected in frustum or not. Later just check on your object if object.inFrustum === true
Below following line
if ( webglObjects && ( object.frustumCulled === false || _frustum.intersectsObject( object ) === true ) ) {
add
object.inFrustum = true;
also where the if block ends add an oposite flag
else {
object.inFrustum = false;
}
My final result in r70 which works perfectly:
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;
}