VCG文档
来源:互联网 发布:淘宝seo搜索优化 编辑:程序博客网 时间:2024/06/04 20:34
有时顶点或面的一些属性并不是总是需要的. VCG 提供了一种方式来指定可选组件. 例如, 属性并不是静态存储在内存中, 而是在你需要的时候可以动态开辟的. 静态开辟的组件的使用是完全易懂的.
为了定义可选组件, 你需要做两件事情:
- 在曲面定义中使用指定类型的容器(继承
std::vector
) - 在 simplex 定义中指定正确的组件类型
当一个可选组件是 enable 的时候它才可以被使用, 例如, 当它的内存已经开辟. 通过调用 Enable
函数可以启用可选组件. VCG 提供了两种机制来管理可选组件: 第一种叫做 Ocf
(for Optional Component Fast), 对每一个 simplex 它使用一个指针, 这样访问可选属性的速度几乎和其他属性一样快. 第二种叫做 Occ
(for Optional Component Compact) , 对每个曲面它仅需要少量内存, 但是访问速度较慢. 下面仅讨论它们的使用.
Optional Component Fast
下面 MyMesh
的定义中指定了顶点和面的一些 Optional Component.
class MyVertexOcf;class MyFaceOcf;struct MyUsedTypesOcf: public vcg::UsedTypes< vcg::Use<MyVertexOcf>::AsVertexType, vcg::Use<MyFaceOcf>::AsFaceType>{};class MyVertexOcf : public vcg::Vertex< MyUsedTypesOcf, vcg::vertex::InfoOcf, // <--- Note the use of the 'special' InfoOcf component vcg::vertex::Coord3f, vcg::vertex::QualityfOcf, vcg::vertex::Color4b, vcg::vertex::BitFlags, vcg::vertex::Normal3f, vcg::vertex::VFAdjOcf >{};class MyFaceOcf : public vcg::Face< MyUsedTypesOcf, vcg::face::InfoOcf, // <--- Note the use of the 'special' InfoOcf component vcg::face::FFAdjOcf, vcg::face::VFAdjOcf, vcg::face::Color4bOcf, vcg::face::VertexRef, vcg::face::BitFlags, vcg::face::Normal3fOcf > {};// the mesh class must make use of the 'vector_ocf' containers instead of the classical std::vectorclass MyMeshOcf : public vcg::tri::TriMesh< vcg::vertex::vector_ocf<MyVertexOcf>, vcg::face::vector_ocf<MyFaceOcf> > {};
在访问可选属性的数据容器之前, 必须调用 EnableXXX()
函数, 这样属性对应的内存空间才会开辟.
MyMeshOcf cmof; assert(tri::HasFFAdjacency(cmof) == false); cmof.face.EnableFFAdjacency(); assert(tri::HasFFAdjacency(cmof) == true);
不调用EnableXXX()
函数而直接使用属性将会导致错误:
cmof.face.EnableNormal(); // remove this line and you will throw an exception for a missing 'normal' component tri::UpdateNormal<MyMeshOcf>::PerVertexPerFace(cmof);
更多例子参考 trimesh_optional.cpp
阅读全文
0 0
- VCG文档
- VCG文档
- VCG文档
- VCG文档
- VCG文档
- VCG文档
- VCG简介与安装
- vcg数据结构1
- vcg数据结构2
- vcg面面关系
- VCG库的使用
- VCG笔记-如何定义mesh
- MeshLab和VCG的开发环境配置
- [计算广告学]GFP, GSP and VCG
- VCG笔记-mesh元素的创建/删除
- 广告竞价策略:GFP,GSP,VCG
- GFP、GSP和VCG的特点和介绍
- 计算广告学中的GFP、GSP和VCG对比
- support vector machine简介
- sbt构建Scala项目_helloworld
- [编程题] 交错01串
- STAR法则
- hdu 1087 (dp)
- VCG文档
- 小白学tkinter(Toplevel组件(顶级窗口),用于弹窗)
- Android 画笔演示功能的实现
- Android recyclerView实现商品规格选择
- 国际化程序
- NDK LOG 输出
- Java面向对象编程之多态(polymorphism)
- oninput、onchange与onpropertychange事件的用法和区别
- 1069. 微博转发抽奖(20)