查看: 1580|回复: 4

求助!如何向一个模型中动态插入一些顶点?

[复制链接]

该用户从未签到

发表于 2010-5-19 14:40:59 | 显示全部楼层 |阅读模式
有一个现成的OSG模型,想在每一帧绘制前都给模型增加几个顶点,提高模型的分辨率,该如何做呢?
举个例子,最简单的模型如下,用Delaunay三角网的方法,生成四个点,由两个三角片组成一个正方形。
然后,我想在正方形的四个边各增加一个顶点,然后使得这个正方形变成由八个三角片组成,该怎么做啊?
Group {
  nodeMask 0xffffffff
  cullingActive TRUE
  num_children 1
  Geode {
    UniqueID Geode_0
    nodeMask 0xffffffff
    cullingActive TRUE
    num_drawables 1
    Geometry {
      UniqueID Geometry_1
      useDisplayList TRUE
      useVertexBufferObjects FALSE
      PrimitiveSets 1
      {
        DrawElementsUInt TRIANGLES 6
        {
          2 1 0 3 1 2
        }
      }
      VertexArray UniqueID Vec3Array_2 Vec3Array 4
      {
        0 0 0
        0 1 0
        1 0 0
        1 1 0
      }
    }
  }
}

PS:我试过每帧绘制前新建一个数组,然后重新将这个数组赋值给Drawable,但是如果原有模型数据量非常大(有10万个三角片)的话这么一遍遍更新就不行了。所以……该怎么办啊……

该用户从未签到

发表于 2010-5-19 16:10:00 | 显示全部楼层
您所说的似乎是表面细化(Subdivsion)的原理?不过我不明白为什么要每一帧都更新一次,直接计算并渲染细化后的模型不可以吗

该用户从未签到

 楼主| 发表于 2010-5-19 16:38:18 | 显示全部楼层
本帖最后由 宇无过 于 2010-5-19 16:40 编辑

2# array

感谢回复!大概就是您说的表面细化的问题

其实是这样的,我要模拟车辙动态形成的过程,就是每一帧车向前走一步,然后后面加一段车辙。

我是在一个现成的OSG格式的地形模型(用Delaunay三角网)生成上通过每一帧更改一些顶点的Z坐标实现的。

然后,为了让车辙的边缘更真实,我就想到把边缘的三角形分裂成若干个更小的三角形,然后我就想到通过向三角形内部插入一些顶点来实现分裂。

然后……然后我就不会做了……

该用户从未签到

发表于 2010-5-19 17:15:34 | 显示全部楼层
我个人认为精细的车辙边缘用纹理来完成更为合适,不然任何人的系统都无法承受成级数上升的顶点数量

该用户从未签到

 楼主| 发表于 2010-5-19 22:02:20 | 显示全部楼层
我个人认为精细的车辙边缘用纹理来完成更为合适,不然任何人的系统都无法承受成级数上升的顶点数量
array 发表于 2010-5-19 17:15


唉,不瞒您说,这是实验室的一个项目,其中的一个要求就是要在车辙上展现不同的分辨率,车辙中间部分三角片大,数量少,边缘部分三角片小,数量多,真正做到模型上有精细和粗糙之分,而不只是用纹理制造出类似的效果……

要是能用纹理,我也不用这么纠结了……555……
您需要登录后才可以回帖 登录 | 注册

本版积分规则

OSG中国官方论坛-有您OSG在中国才更好

网站简介:osgChina是国内首个三维相关技术开源社区,旨在为国内更多的技术开发人员提供最前沿的技术资讯,为更多的三维从业者提供一个学习、交流的技术平台。

联系我们

  • 工作时间:09:00--18:00
  • 反馈邮箱:1315785073@qq.com
快速回复 返回顶部 返回列表