//-------------------------------------------------------------------------------------------------- /// //-------------------------------------------------------------------------------------------------- void QSRSnippetWidget::showModelStatistics() { RenderSequence* renderSeq = m_snippet->renderSequence(); CVF_ASSERT(renderSeq); size_t totPartCount = 0; size_t totFaceCount = 0; int numRenderings = renderSeq->renderingCount(); int ir; for (ir = 0; ir < numRenderings; ir++) { Rendering* rendering = renderSeq->rendering(ir); CVF_ASSERT(rendering); Scene* scene = rendering->scene(); CVF_ASSERT(scene); int numModels = scene->modelCount(); int im; for (im = 0; im < numModels; im++) { Model* model = scene->model(im); Collection<Part> allParts; model->allParts(&allParts); size_t numParts = allParts.size(); size_t ip; for (ip = 0; ip < numParts; ip++) { Part* part = allParts[ip].p(); Drawable* drawable = part->drawable(); totPartCount++; totFaceCount += drawable->faceCount(); } } } cvf::Trace::show("Total number of parts: %ld", totPartCount); cvf::Trace::show("Total number of faces: %ld", totFaceCount); }
//-------------------------------------------------------------------------------------------------- /// //-------------------------------------------------------------------------------------------------- void QSRSnippetWidget::setRenderMode(DrawableGeo::RenderMode mode) { m_lastSetRenderMode = mode; Collection<Part> allParts; RenderSequence* renderSeq = m_snippet->renderSequence(); CVF_ASSERT(renderSeq); int numPasses = renderSeq->renderingCount(); int i; for (i = 0; i < numPasses; i++) { Rendering* rendering = renderSeq->rendering(i); CVF_ASSERT(rendering); Scene* scene = rendering->scene(); CVF_ASSERT(scene); scene->allParts(&allParts); } size_t numParts = allParts.size(); size_t partIdx; for (partIdx = 0; partIdx < numParts; partIdx++) { Part* part = allParts.at(partIdx); cvf::uint lod; for (lod = 0; lod < cvf::Part::MAX_NUM_LOD_LEVELS; lod++) { DrawableGeo* drawableGeo = dynamic_cast<DrawableGeo*>(part->drawable(lod)); if (drawableGeo) { drawableGeo->setRenderMode(m_lastSetRenderMode); } } } }
//-------------------------------------------------------------------------------------------------- /// //-------------------------------------------------------------------------------------------------- void QSRSnippetWidget::convertDrawablesToShort() { RenderSequence* renderSeq = m_snippet->renderSequence(); CVF_ASSERT(renderSeq); int numPasses = renderSeq->renderingCount(); int i; for (i = 0; i < numPasses; i++) { Rendering* rendering = renderSeq->rendering(i); CVF_ASSERT(rendering); Scene* scene = rendering->scene(); CVF_ASSERT(scene); int numModels = scene->modelCount(); int j; for (j = 0; j < numModels; j++) { Model* model = scene->model(j); Collection<Part> partCollection; model->allParts(&partCollection); size_t numParts = partCollection.size(); size_t i; for (i = 0; i < numParts; i++) { DrawableGeo* drawable = dynamic_cast<DrawableGeo*>(partCollection.at(i)->drawable()); if (drawable) { drawable->convertFromUIntToUShort(); } } } } }