//-***************************************************************************** // SCENE CLASS //-***************************************************************************** Scene::Scene( const std::string &fileName, bool verbose ) : m_fileName( fileName ) , m_minTime( ( chrono_t )FLT_MAX ) , m_maxTime( ( chrono_t )-FLT_MAX ) { Timer playbackTimer; Alembic::AbcCoreFactory::IFactory factory; m_archive = factory.getArchive( fileName ); m_topObject = IObject( m_archive, kTop ); if ( verbose ) std::cout << "Opened archive and top object, creating drawables." << std::endl; m_drawable.reset( new IObjectDrw( m_topObject, false ) ); ABCA_ASSERT( m_drawable->valid(), "Invalid drawable for archive: " << fileName ); if ( verbose ) std::cout << "Created drawables, getting time range." << std::endl; m_minTime = m_drawable->getMinTime(); m_maxTime = m_drawable->getMaxTime(); if ( m_minTime <= m_maxTime ) { if ( verbose ) std::cout << "\nMin Time: " << m_minTime << " seconds " << std::endl << "Max Time: " << m_maxTime << " seconds " << std::endl << "\nLoading min time." << std::endl; m_drawable->setTime( m_minTime ); } else { if ( verbose ) std::cout << "\nConstant Time." << std::endl << "\nLoading constant sample." << std::endl; m_minTime = m_maxTime = 0.0; m_drawable->setTime( 0.0 ); } ABCA_ASSERT( m_drawable->valid(), "Invalid drawable after reading start time" ); if ( verbose ) std::cout << "Done opening archive. Elapsed CPU time: " << ((float)playbackTimer.elapsed()) / CLOCKS_PER_SEC << " seconds." << std::endl; // Bounds have been formed! m_bounds = m_drawable->getBounds(); if ( verbose ) std::cout << "Bounds at min time: " << m_bounds.min << " to " << m_bounds.max << std::endl; }
void AlembicMeshFileReader::read(IMeshBuilder& builder) { const IArchive archive(AbcCoreHDF5::ReadArchive(), m_filename); read_object(IObject(archive, kTop), builder); }