|
声明一下,我是菜鸟
前段时间写了个依据CT图像序列生成血管树的程序(显示模型方面是用opengl写的)
现在想用在osg的场景里面,碰到了一些问题:
1.参考了mailling list和一些意见,我看了osgteapot例子,通过继承一个drawable类,我初步实现了opengl代码和osg的整合,可以让血管树通过osg的viewer类显示,但是模型 放置的位置很不好,我觉得应该是我设置的boundingbox不合理的问题,但osgteapot例子里面boundingbox的计算问题我就看不太懂,特别是expandby的使用,我想请教一下各位, 尽量让我弄清楚,在下先行谢过。
特别是
bbox.expandBy(osg::Vec3(p[j][k][0],p[j][k][1],p[j][k][2]));
bbox.expandBy(osg::Vec3(q[j][k][0],q[j][k][1],q[j][k][2]));
osgteapot里面的这两句分别对应的是什么意思?
2.前面已经说到血管树模型能通过viewer类显示,但是导出模型时发现模型文件里面没有顶点和边的信息,只是一个含有纹理等状态信息的文件。我想把osgteapot里面绘制出来的 teapot 导出来,结果也是只有纹理等信息,而几何体的信息却没有。我用的是osgDB::writeNodeFile来导出模型。
导出的osg模型文件为以下内容:
Group {
nodeMask 0xffffffff
cullingActive TRUE
num_children 1
Geode {
nodeMask 0xffffffff
cullingActive TRUE
StateSet {
rendering_hint DEFAULT_BIN
renderBinMode INHERIT
textureUnit 0 {
GL_TEXTURE_GEN_S ON
GL_TEXTURE_GEN_T ON
GL_TEXTURE_GEN_R ON
GL_TEXTURE_GEN_Q ON
GL_TEXTURE_2D ON
Texture2D {
file "Images/reflect.rgb"
wrap_s CLAMP
wrap_t CLAMP
wrap_r CLAMP
min_filter LINEAR_MIPMAP_LINEAR
mag_filter LINEAR
maxAnisotropy 1
borderColor 0 0 0 0
borderWidth 0
useHardwareMipMapGeneration TRUE
unRefImageDataAfterApply FALSE
internalFormatMode USE_IMAGE_DATA_FORMAT
resizeNonPowerOfTwo TRUE
}
TexGen {
mode SPHERE_MAP
}
}
}
num_drawables 1
}
}
欲请教各位,这是什么原因?能通过viewer类显示,却不能导出到硬盘吗? |
|