void GeometryApp::loadGeomSource( const geom::Source &source, const geom::Source &sourceWire ) { // The purpose of the TriMesh is to capture a bounding box; without that need we could just instantiate the Batch directly using primitive TriMesh::Format fmt = TriMesh::Format().positions().normals().texCoords().tangents(); if( mShowColors && source.getAvailableAttribs().count( geom::COLOR ) > 0 ) fmt.colors(); TriMesh mesh( source, fmt ); AxisAlignedBox bbox = mesh.calcBoundingBox(); mCameraLerpTarget = mesh.calcBoundingBox().getCenter(); mCameraViewDirection = mCamera.getViewDirection(); mRecenterCamera = true; if( mPhongShader ) mPrimitive = gl::Batch::create( mesh, mPhongShader ); if( mWireShader ) mPrimitiveWire = gl::Batch::create( sourceWire, mWireShader ); if( mWireframeShader ) mPrimitiveWireframe = gl::Batch::create( mesh, mWireframeShader ); vec3 size = bbox.getMax() - bbox.getMin(); float scale = std::max( std::max( size.x, size.y ), size.z ) / 25.0f; mPrimitiveNormalLines = gl::Batch::create( mesh >> geom::VertexNormalLines( scale ), gl::getStockShader( gl::ShaderDef().color() ) ); if( mesh.hasTangents() ) mPrimitiveTangentLines = gl::Batch::create( mesh >> geom::VertexNormalLines( scale, geom::TANGENT ), gl::getStockShader( gl::ShaderDef().color() ) ); else
PxBounds3 Physx::to( const AxisAlignedBox& b ) { return PxBounds3( to( b.getMin() ), to( b.getMax() ) ); }