|
请教:我在球体上绘制了一个水面,然后使用shader添加上倒影,但是倒影的位置和方向都是错的,请问是什么原因?
图1
图2
上图中,图1显示的是模型加载到球体上,没有经过矩阵变换,模型的方位错误的情况下,倒影到是对的。
图2中模型加载到球体上,在经过矩阵变换后,模型位置和方位正确,但是倒影错误。
请教倒影错误的原因什么?是与模型矩阵变换有关?如何设置?下面是将模型添加到RTT相机下作为反射的源码。
//height 水面高度
osg::ClipPlane* clipplane = new osg::ClipPlane;
clipplane->setClipPlane(0.0,0.0,-1.0,height);
clipplane->setClipPlaneNum(0);
osg::ClipNode* clipNode = new osg::ClipNode;
clipNode->addClipPlane(clipplane);
osg::MatrixTransform* reverseMatrix = new osg::MatrixTransform;
reverseMatrix->preMult(osg::Matrix::translate(0.0,0.0,-height)*
osg::Matrix::scale(1.0f,1.0f,-1.0f)*
osg::Matrix::translate(0.0,0.0,height));
reverseMatrix->addChild(pRefNode);
clipNode->addChild(reverseMatrix);
m_pWaterCamera->addChild(clipNode); |
|