MStatus exampleCameraSetViewCmd::doEditFlags() // // Description: // Handle edits for flags added by this class. // If the flag is unknown, return MS::kSuccess and the parent class // will attempt to process the flag. Returning MS::kUnknownParameter // will cause the parent class to process the flag. // { MPx3dModelView *user3dModelView = modelView(); if (NULL == user3dModelView) { MGlobal::displayError("NULL == user3dModelView!"); return MS::kFailure; } // This is now safe to do, since the above test passed. // exampleCameraSetView *dView = (exampleCameraSetView *)user3dModelView; MArgParser argData = parser(); if (argData.isFlagSet(kTestMultiPackInitFlag)) { return initTests(*dView); } else if (argData.isFlagSet(kTestMultiPackResultsFlag)) { return testResults(*dView); } else if (argData.isFlagSet(kTestMultiPackClearFlag)) { return clearResults(*dView); } return MS::kUnknownParameter; }
InstanceModel* Scene::buildInstance(Json::Value defInstance) { InstanceModel* instance = new InstanceModel( idModels[defInstance["reference"].asString()]); mat4 modelView(1); modelView *= Translate(getVec3(defInstance.get("translate","[0,0,0]"))); instance->setModelView(modelView); models.push_back(instance); return instance; }
eq::Matrix4f Channel::_computeModelView() const { const FrameData& frameData = _getFrameData(); const Pipe* pipe = static_cast< const Pipe* >( getPipe( )); const Renderer* renderer = pipe->getRenderer(); eq::Matrix4f modelView( eq::Matrix4f::IDENTITY ); if( renderer ) { const VolumeScaling& volScaling = renderer->getVolumeScaling(); eq::Matrix4f scale( eq::Matrix4f::ZERO ); scale.at(0,0) = volScaling.W; scale.at(1,1) = volScaling.H; scale.at(2,2) = volScaling.D; scale.at(3,3) = 1.f; modelView = scale * frameData.getRotation(); } modelView.set_translation( frameData.getTranslation( )); return getHeadTransform() * modelView; }
void FrustumTest::sync() { float proj[16]; float modl[16]; glGetFloatv( GL_PROJECTION_MATRIX, proj ); glGetFloatv( GL_MODELVIEW_MATRIX, modl ); QMatrix4x4 projection( proj[0], proj[4], proj[8], proj[12], proj[1], proj[5], proj[9], proj[13], proj[2], proj[6], proj[10], proj[14], proj[3], proj[7], proj[11], proj[15] ); QMatrix4x4 modelView( modl[0], modl[4], modl[8], modl[12], modl[1], modl[5], modl[9], modl[13], modl[2], modl[6], modl[10], modl[14], modl[3], modl[7], modl[11], modl[15] ); sync( projection, modelView ); }
void ObjectMatch :: fillXmlElement(XMLNode& element) const { setXmlAttribute(element, "model", model().name()); setXmlAttribute(element, "view", modelView().id().view_id_in_object); addXmlChild(element, "pose", *m_pose); }
void IRRQuadRenderer::render(const Group& group) { if (!prepareBuffers(group)) return; irr::video::IVideoDriver* driver = device->getVideoDriver(); // Computes the inverse model view irr::core::matrix4 invModelView; { irr::core::matrix4 modelView(driver->getTransform(irr::video::ETS_VIEW)); modelView *= driver->getTransform(irr::video::ETS_WORLD); modelView.getInversePrimitive(invModelView); // wont work for odd modelview matrices (but should happen in very special cases) } // Saves the renderer texture irr::video::ITexture* savedTexture = material.TextureLayer[0].Texture; if (texturingMode == TEXTURE_NONE) material.TextureLayer[0].Texture = NULL; if ((texturingMode == TEXTURE_2D)&&(group.getModel()->isEnabled(PARAM_TEXTURE_INDEX))) { if (group.getModel()->isEnabled(PARAM_ANGLE)) renderParticle = &IRRQuadRenderer::renderAtlasRot; else renderParticle = &IRRQuadRenderer::renderAtlas; } else { if (group.getModel()->isEnabled(PARAM_ANGLE)) renderParticle = &IRRQuadRenderer::renderRot; else renderParticle = &IRRQuadRenderer::renderBasic; } // At the first frame we pass the full buffer so that VBOs are correctly initialised // Then at next frames we pass only what is needed to be rendered if (currentBuffer->areVBOInitialized()) currentBuffer->setUsed(group.getNbParticles()); else currentBuffer->setUsed(group.getParticles().getNbReserved()); bool globalOrientation = precomputeOrientation3D( group, Vector3D(invModelView[8],invModelView[9],invModelView[10]), Vector3D(invModelView[4],invModelView[5],invModelView[6]), Vector3D(invModelView[12],invModelView[13],invModelView[14])); if (globalOrientation) { computeGlobalOrientation3D(); for (size_t t = 0; t < group.getNbParticles(); ++t) (this->*renderParticle)(group.getParticle(t)); } else { for (size_t t = 0; t < group.getNbParticles(); ++t) { const Particle& particle = group.getParticle(t); computeSingleOrientation3D(particle); (this->*renderParticle)(particle); } } currentBuffer->getMeshBuffer().setDirty(irr::scene::EBT_VERTEX); driver->setMaterial(material); driver->drawMeshBuffer(¤tBuffer->getMeshBuffer()); // this draw call is used in order to be able to use VBOs currentBuffer->setVBOInitialized(true); material.TextureLayer[0].Texture = savedTexture; // Restores the texture }