查看: 4274|回复: 10

关于osg中点point的设置

[复制链接]

该用户从未签到

发表于 2012-11-20 08:57:15 | 显示全部楼层 |阅读模式
大家好,请问一下怎样设置osg中点point随视点远近大小变化,我想用鼠标追踪球对它放大默认情况下点大小是不变的啊,point->setDistanceAttenuation(osg::Vec3(x,y,z))这个函数怎么用啊?还有怎样设置点的颜色呢?

该用户从未签到

发表于 2012-11-20 09:31:35 | 显示全部楼层
用osg::Sphere啊

该用户从未签到

 楼主| 发表于 2012-11-20 09:50:28 | 显示全部楼层
liushui 发表于 2012-11-20 09:31
用osg::Sphere啊

你好,我只想通过点的方式设置,因为我要用很多点,sphere太占内存了,怎样设置点随随视点大小变化啊?非常感谢

该用户从未签到

发表于 2012-11-20 14:45:48 | 显示全部楼层
smengq 发表于 2012-11-20 09:50
你好,我只想通过点的方式设置,因为我要用很多点,sphere太占内存了,怎样设置点随随视点大小变化啊?非 ...

点没有大小的,当然是不变的,最多设置下占几个像素,要能变大小的只能用球体或正方体。

该用户从未签到

发表于 2012-11-22 16:43:35 | 显示全部楼层
用setColorArray 可以对点设置颜色 具体的我也不太会 你可以去找找程序

该用户从未签到

发表于 2012-11-22 16:43:38 | 显示全部楼层
用setColorArray 可以对点设置颜色 具体的我也不太会 你可以去找找程序

该用户从未签到

 楼主| 发表于 2012-11-22 20:22:16 | 显示全部楼层
一大波蓝猫 发表于 2012-11-22 16:43
用setColorArray 可以对点设置颜色 具体的我也不太会 你可以去找找程序

谢谢,可以实现颜色设定,点的大小随视点变化怎样实现呢?

该用户从未签到

发表于 2012-11-22 20:47:31 | 显示全部楼层
smengq 发表于 2012-11-22 20:22
谢谢,可以实现颜色设定,点的大小随视点变化怎样实现呢?

这个就不会了。。我也是新手。。不好意思啊。。

该用户从未签到

发表于 2012-11-27 10:44:10 | 显示全部楼层
点的大小随视点变化?那您只能用一个Sphere了,OpenGL的点大小设置是屏幕像素的值,不能随视点变化

该用户从未签到

 楼主| 发表于 2012-11-27 13:07:36 | 显示全部楼层
array 发表于 2012-11-27 10:44
点的大小随视点变化?那您只能用一个Sphere了,OpenGL的点大小设置是屏幕像素的值,不能随视点变化

是不是跟point->setDistanceAttenuation(osg::Vec3(x,y,z))这个函数有关啊?将它设定一个数值测试,鼠标放大会有一定变化,但是依据什么设定数值还不明确,这个函数如何使用?另外我还想请教arry大侠,在osg程序下拾取到自定义osg:rawable对象,要重写Drawable::accept(PrimitiveFunctor&)接口才行,怎样设置才能求交后得到交点坐标?能不能给个例子讲解下具体实现的过程?谢谢

该用户从未签到

发表于 2012-11-29 15:17:32 | 显示全部楼层
我没有用过这个函数,不过看起来它是可以用的。在OpenGL Spec上可以查到相关的说明
The point size is multiplied with a distance attenuation factor
    and clamped as follows:

        derived_size = Clamp(size * sqrt(dist_atten(dist)))

    where dist_atten is specified as

                                 1
        dist_atten(d) = -------------------
                        a + b * d + c * d^2

    and 'd' is the eye-coordinate distance from the eye, (0, 0, 0, 1) in
    eye coordinates, to the vertex.

照此设置参数即可,不过您应该还需要同时设置Max和MinSize

accept(PrimitiveFunctor&)与求交并无关系。事实上自定义Drawable不能求交的一个主要原因是,OSG无法知道它是如何组织图元的,那么您在这里需要提供的就是顶点数组以及图元的组织形式(哪几个顶点组成一个三角形),然后IntersectionVisitor就可以识别并且求交了
至于如何提供,参考一下Geometry的源代码就可以了,很简单
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

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

联系我们

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