游戏开发论坛

 找回密码
 立即注册
搜索
楼主: dreams

speed tree技术分析

[复制链接]

18

主题

86

帖子

111

积分

注册会员

Rank: 2

积分
111
发表于 2006-6-30 16:26:00 | 显示全部楼层

Re:speed tree技术分析

这里也有关于 大规模植物渲染的东西。
http://www.fluidinteractive.com/
看了视频,感觉很效果很好

18

主题

971

帖子

982

积分

高级会员

Rank: 4

积分
982
发表于 2006-6-30 19:50:00 | 显示全部楼层

Re:speed tree技术分析

另外,可能dreams老兄当时用speedtree时不太注意,以为只是相机跟随演示,所以在《完美世界》里才发现上述技术实现问题....
事实上,speedtree的演示是可以操作的,可以支持用线框演示、去掉主干、去掉枝杆、去掉树叶、去掉公告板表示的树、去掉光照、上下移动相机、左右旋转相机、设置不同的相机方向等等很丰富的操作,昨天下下来的,没看到有文档,就把键盘按了一遍,结果试出来了。这样很容易看出所有的问题。哈哈,不用冥思苦想啊,直接就能看出结果啊,爽死了.
发现speedtree的演示里画面确实漂亮的惊人,但也存在很多的问题,比如纹理过滤等.

实际上speedtree生成树的主干部分mesh部分本身的3角形也非常少,而且渲染真实树的部分更少,还没达到dreams老兄说的80棵呢。。其它的都是公告板了。地形好像有两层网格,不知为什么.

下面把操作键及相关数据文件的分析发给各位吧。下了DEMO的可以直接试试看,很容易看过端倪来。
数字0~9,控制相机
i 线框渲染/实体渲染
z 显示/隐藏公告板渲染的树木
l 显示/隐藏树叶
o显示/隐藏枝干
b 显示/隐藏主干
t 显示/隐藏地形
m 显示/隐藏地形上的装饰物(如石头)
g 显示/隐藏草地
x 显示/隐藏阴影贴图
y 显示/不显示树木被风吹的动画
v 显示/隐藏树木根据光照生成的阴影
s 启用/禁用声音

资源文件参考:
.dds .tga .jpg .png等为纹理文件,公告板纹理也在里面
.env 文件共三个,分别对应3种渲染级别(高级、中级、低级)。是渲染的配置文件,从中可以看到模型被怎么样配置到场景中去.(直接用记事本等打开就能看到)
.spt文件: 是speed tree这些DEMO中树模型的专用文件,里面可以看到所有BezierSpline的参数值是插值的值.(直接用记事本等打开就能看到)
.IMF 场景中除树以外的模型文件,里面记录了相关模型的数据,仿佛是用三角形形式记录的,不是100%确定,因为没去数过.
.wav,声音文件
.ini 这个不用我说了吧

18

主题

971

帖子

982

积分

高级会员

Rank: 4

积分
982
发表于 2006-6-30 19:52:00 | 显示全部楼层

Re:speed tree技术分析

另外
感觉他那种曲线渲染方式确实是一种趋势。但实际上render的面并不太多,自己如果要模仿应该可以做到,但艺术效果要等我们的artist去配置才行.


speedtree的Demo的运行环境要求并不高,我的ATI9550显卡跑得已经非常流畅了.

22

主题

274

帖子

274

积分

中级会员

Rank: 3Rank: 3

积分
274
发表于 2006-7-3 13:40:00 | 显示全部楼层

Re:speed tree技术分析

不同意"在现在的GPU上batch中顶点的最佳数量应当在16000左右..",这个应该随机器整体配置变化.
其实SPEEDTREE的这种建模方式更有启发性.

22

主题

274

帖子

274

积分

中级会员

Rank: 3Rank: 3

积分
274
发表于 2006-7-3 13:50:00 | 显示全部楼层

Re:speed tree技术分析

对于"其他物体投影到自身上的阴影",添加1个纹理单元只能解决只有一个其它物体(或者一张其它物体的SM)的情况.
不管SPEEDTREE怎么做的,如果有多个其它物体,最好还是多个PASS.

18

主题

971

帖子

982

积分

高级会员

Rank: 4

积分
982
发表于 2006-7-4 13:44:00 | 显示全部楼层

Re: Re:speed tree技术分析

回来打自己一记耳光....
因为max和maya和auto cad默认的都是用曲线和曲面进行建模和存储的......
只不过在导出到程序中去时,被强行转变成多边形(polygon)了...所以一开始...这些建模软件就是用着nurbs ,b-splline等进行的,不是什么奇怪的事...在实时渲染程序里看到曲线曲面确实还是头一次...我的见识太短了/

33

主题

118

帖子

173

积分

注册会员

Rank: 2

积分
173
 楼主| 发表于 2006-7-7 16:23:00 | 显示全部楼层

Re:speed tree技术分析

几天没有看这个帖子没想到这么多人关注,首先更正whb9633的一个说法,speed tree并不是NV的产品,而是IDV,官方网站是:www.speedtree.com.对于曲面检测碰撞效率高的问题可能大家理解有误,用BV对于排除那些没有发生碰撞物体效率非常高,但是如果检查两个物体精确的碰撞并且需要求出碰撞信息的话那么曲面的效率是最高的,如果有疑问可以认真读一下real-time rendering这本书的相关章节.
回复moremoretime兄,关于batch的最佳顶点数量其实都是一个估计值,当然是随着GPU的不同而不同,因此只能以某一时期的销量最大的GPU作为参考标准,其实这个数值并不是我自己试验得出的结果,而是从HL2中拿过来的,有点不好意思,呵呵.这里同意你的观点,projective shadow应该是另开一个pass渲染,否者是无法做batch的.
speed tree中树的顶点数据绝对是在CPU中产生的,应该不会在GPU中,因为GPU中支持曲面的只有ATI一家,N卡并不支持.
最后谈一下如何实现self-shadow的问题,如果只实现主干的self-shadow那么问题相对简单,只要将树叶分成两部分,将位于光源侧的树叶进行投影作为self-shadow map即可.

18

主题

971

帖子

982

积分

高级会员

Rank: 4

积分
982
发表于 2006-7-8 15:30:00 | 显示全部楼层

Re:speed tree技术分析

回楼主:
1.realtime rendering 看过,应该说单纯的曲面不会比层次结构快。
2. speed tree中树的顶点数据绝对是在CPU中产生的,应该不会在GPU中,因为GPU中支持曲面的只有ATI一家,N卡并不支持.
====================================================================事实上仿佛曲面的渲染已经成了dx10的一个广告之一,可以参考nv或ati开发网中三篇GDC上的dx10论文。并有相关示例代码,nv和ati都支持曲面渲染,且是隐曲面的渲染。

18

主题

971

帖子

982

积分

高级会员

Rank: 4

积分
982
发表于 2006-7-8 15:33:00 | 显示全部楼层

Re:speed tree技术分析

另外,个人认为之所以能渲染如下大的场景和数百甚至上千棵树,并有无数个草丛,应该是用了instancing技术,因为大量的公告板如果不停的回调结果将是悲哀的。实际上speedtree中树木模型并不多,大量的也都是重复相同的物体.

个人之所以认为是在GPU里进行渲染,是因为nv早前也发出一个speedtree的cg版demo,我的ATI9550显卡就不支持......如果是在CPU生成,按理说说显卡不会有任何的限制.

22

主题

274

帖子

274

积分

中级会员

Rank: 3Rank: 3

积分
274
发表于 2006-7-8 15:38:00 | 显示全部楼层

Re:speed tree技术分析

DX10好像是通过新功能GEOMETRY SHADER实现的曲面渲染,GS能可编程的生成PRIMITIVE,所以能灵活实现曲面渲染.
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

作品发布|文章投稿|广告合作|关于本站|游戏开发论坛 ( 闽ICP备17032699号-3 )

GMT+8, 2025-6-6 15:12

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表