- 浏览: 92651 次
- 性别:
- 来自: 上海
文章分类
最新评论
PV3D是一个开源的遵循MIT协议的使用AS3代码写成的3D引擎.
在PV3D中,当两个物体接触时,他们的面就回进行错误排列,产生破面现象,为什么会出现这种情况。
三维物体的面的最小单位是三角形,三角形离摄像机的垂直距离,我们一般称作Z-depth,我一般称作Z-depth(深度),所以当两个最小单位碰面的时候,就只能出现一个在另个物体的上面,而不能都出现一部分。怎样解决?
1.第一个办法是使用viewportLayer做整体排列来调整这个模型的深度,让一个物体在另一个物体的上面,而不是事一个物体的一部分在另一个物体的上面,当然这样的代价,就是一个物体会突然蹦到另一个物体的外面。但是效率高,不需要用四叉树渲染,在没有3D加速卡渲染的情况下,是一个很好选择,因为flash作为一个客户端程序没有办法去调用DirectX中的API,所有没办法去使用显卡去渲染,而只能使用cpu去渲染。我们通常看到在使用PV3D在运行在浏览器时,CPU的使用率都很高,就是这个原因。
2.使用更多的面
这样破面的几率更小,同时出现破面后的,影响也越小,因为面越多,出现破面后的影响的区域越小,当然这样会影响一定效率,CPU要花更多时间来渲染这些面。
3.四叉树渲染
什么交四叉树渲染,
四叉树用于点数据、区域、曲线、平面及立体方面。在每一层上可以分解成相等的部分。
区域四叉树是基于把图像数组不断细分到四个相同大小的象限中。如果这个数组不是完全由1或完全由0组成(也就是说这个区域没有覆盖整个数组),那么它将被细分到象限中、子象限中,依此类推,直到得到完全由1或完全由0组成的块为止 。
作为区域四叉树的一个例子,从图1.可以看出,区域内的像素用1表示,区域外的像素用0表示。由图1中数组所产生的块由图1.1c表示,这个过程由度数为4的树表示(即每一个非叶子结点有4个孩子结点)。
在树型表示中,根结点与整个数组相对应。一个结点的每一个子结点表示一个由这个结点所表示区域的一个象限(按西北、东北、西南、东南次序标记)。叶结点则与那些没有必要进一步细分的块相对应。 标记为黑的或白的,主要依据它的相应块是否完全在表示的区域内(仅包含1)或外(不含1)。所有的非叶子结点均被标记为灰色(也就是说,它的块同时包含0和1)。
简单的说就是将破门的三角形,通过算法拆成更新的三角形,在PV3D中已经加入了QuadTree算法,很好的解决了这个问题
private function clickHandler(e:MouseEvent):void
{
if(renderer is QuadrantRenderEngine)
renderer = new BasicRenderEngine();
else
renderer = new QuadrantRenderEngine(QuadrantRenderEngine.ALL_FILTERS);
}
但是当面很多的时候,效率确实不敢恭维。
我的网站设计 web design home page
http://www.webdesign-cn.com
http://www.webdesign-china.cn
在PV3D中,当两个物体接触时,他们的面就回进行错误排列,产生破面现象,为什么会出现这种情况。
三维物体的面的最小单位是三角形,三角形离摄像机的垂直距离,我们一般称作Z-depth,我一般称作Z-depth(深度),所以当两个最小单位碰面的时候,就只能出现一个在另个物体的上面,而不能都出现一部分。怎样解决?
1.第一个办法是使用viewportLayer做整体排列来调整这个模型的深度,让一个物体在另一个物体的上面,而不是事一个物体的一部分在另一个物体的上面,当然这样的代价,就是一个物体会突然蹦到另一个物体的外面。但是效率高,不需要用四叉树渲染,在没有3D加速卡渲染的情况下,是一个很好选择,因为flash作为一个客户端程序没有办法去调用DirectX中的API,所有没办法去使用显卡去渲染,而只能使用cpu去渲染。我们通常看到在使用PV3D在运行在浏览器时,CPU的使用率都很高,就是这个原因。
2.使用更多的面
这样破面的几率更小,同时出现破面后的,影响也越小,因为面越多,出现破面后的影响的区域越小,当然这样会影响一定效率,CPU要花更多时间来渲染这些面。
3.四叉树渲染
什么交四叉树渲染,
四叉树用于点数据、区域、曲线、平面及立体方面。在每一层上可以分解成相等的部分。
区域四叉树是基于把图像数组不断细分到四个相同大小的象限中。如果这个数组不是完全由1或完全由0组成(也就是说这个区域没有覆盖整个数组),那么它将被细分到象限中、子象限中,依此类推,直到得到完全由1或完全由0组成的块为止 。
作为区域四叉树的一个例子,从图1.可以看出,区域内的像素用1表示,区域外的像素用0表示。由图1中数组所产生的块由图1.1c表示,这个过程由度数为4的树表示(即每一个非叶子结点有4个孩子结点)。
在树型表示中,根结点与整个数组相对应。一个结点的每一个子结点表示一个由这个结点所表示区域的一个象限(按西北、东北、西南、东南次序标记)。叶结点则与那些没有必要进一步细分的块相对应。 标记为黑的或白的,主要依据它的相应块是否完全在表示的区域内(仅包含1)或外(不含1)。所有的非叶子结点均被标记为灰色(也就是说,它的块同时包含0和1)。
简单的说就是将破门的三角形,通过算法拆成更新的三角形,在PV3D中已经加入了QuadTree算法,很好的解决了这个问题
private function clickHandler(e:MouseEvent):void
{
if(renderer is QuadrantRenderEngine)
renderer = new BasicRenderEngine();
else
renderer = new QuadrantRenderEngine(QuadrantRenderEngine.ALL_FILTERS);
}
但是当面很多的时候,效率确实不敢恭维。
我的网站设计 web design home page
http://www.webdesign-cn.com
http://www.webdesign-china.cn
发表评论
-
Android游戏开发
2011-07-01 15:26 196Android开发中Activity是个 -
Flash WebGame 开发经验心得和PureMVC框架细说
2011-06-28 14:02 1525→前端的主程序架构和模块划分与人手和人事分工是紧密联系在一起的 ... -
Flash中的深度排序
2011-06-28 11:34 1239As for Multiplayer Games and Vi ... -
Flex 中的callback
2011-06-28 11:16 935Flash支持传递函数做完参数传递。 下面是主函数中的方法 ... -
常用flash引擎和框架
2011-06-27 11:08 2912官方在线帮助(没标英文的都是中文) 用于 Adobe Flas ... -
原来flash player对图片的解码不是异步的,AIR2.6后就异步了
2011-06-27 10:53 819用过 Loader 对象的人都知道,加载图片时,无论是使用 l ... -
Flash WebGame 开发经验心得和PureMVC框架细说
2011-06-27 10:32 1037→前端的主程序架构和模块划分与人手和人事分工是紧密联系在一起的 ... -
简要评说Adobe的FlashPlayer的渲染算法
2011-06-27 10:22 974前些时候看到CSDN上一篇文章介绍FlashPlayer的渲染 ... -
游戏中的智能寻路
2011-05-22 18:20 1223近年来,游戏产业的快 ... -
as3中ProgressEvent的bytesTotal始终为0
2011-05-16 09:50 1480as3中ProgressEvent的bytesTotal始终为 ... -
使用URI-Style Namespace编译ActionScript/Flex Library
2011-05-12 11:10 794当你开发了一个有着多个Pacakge的类库,并在MXML中使用 ... -
环境贴图
2011-03-29 10:49 1047教程:实时环境映射贴图技术实时环境映射贴图技术(Real-ti ... -
Python之旅
2010-12-09 19:40 924一直用AS3+Red5做一些小游戏,感觉挺方便的,特别在做上下 ... -
flash player10的rotationY的使用
2010-12-07 12:26 1581flash player10提供了对3D的支持,虽然功能不够强 ... -
red5的常用方法
2010-12-03 10:11 954在使用red5+flash做rpg游戏开发的时候有些功能是需要 ... -
PV3d性能优化
2010-11-25 14:19 1316当你优化你的程序时, ... -
PV3D处理3D矢量绘图与3D文本
2010-08-23 11:46 1140Papervision3D主要以位图为 ... -
Flash中矢量和位图的使用
2010-06-09 16:47 855最近在做一个世界地图的Flash,其中导入一个很大的矢量图形, ... -
flex 3 + .net开发flash Remoting四[完整代码
2010-03-02 20:49 727一. 相关说明: 本 ... -
关于PV3D常用材质的讨论
2009-12-17 14:05 1087PV3D中的贴图材质有很多。 颜色材质Co ...
相关推荐
进入修补破面命令的基本方法是: Feature > Redefine > 选择破曲面 > 进入修补破面菜单 注意:在修补破面过程中,每修补完成一部分破面后,要及时保存,否则有可能前功尽弃 1、打开文件 打开文件时请在Open...
PROE 破面修补思路,破面修补方法; 适合PROE 三维图设计人员参考用
ProE破面修补-手,补面的好题目。练手不错,试一下你的补面功底。
proe补破面
介绍了系统的IDD环境下的破面修补,由于自4.0后的补面与从前的版本有很大的不同,故像大家推荐一下!
proe3.0破面修复教程,无维网冰大(IceFai)原创教程
Creo2.0破面修补详细教程
catia破面修补-22c0a82d227916888486d74b 算法竞赛训练指南源代码
分享下破面修补的教程,希望大学好好学习天天向上
UCLA Mesh Creator 2D 图片生成对应简单 3D 效果 1、png 的 2D 图片效果更佳 2、导入 Unity 直接使用
ProE5.0破面修补,超级好用想希望大家分享
中望3DTM是由中望公司最新推出的一款高性价比的CAD/CAM一体化解决方案,同时也是中国唯一一款具有全球自主知识产权的三维设计软件。...中望3D强大的曲面造型和方便的修复和缝合工具极大的方便了间隙和破面的修补
CATIA破面修补.rar
proe5.0的IDD环境下的破面修补,希望对大家有用哟!!与以前的版本不同,和大家分享一下!
creo3.0_破面修补详细教程.doc
3dmax一键通道渲染 3DMAX一键通道渲染脚本插件功能介绍: 1、一键自动安装,使用方便 2、支持渲染各种通道AO、SSS、...3、修复了VR代理渲染破面 4、自动关闭灯光,自动渲染,自动切换扫描线渲染器,自动还原材质
SU中出现破面的四种解决方法.pdf
Unity3d中爆炸效果的详细制作方法。资料收集于网络。
URP管线下的简单贴图加遮罩shader
CityEngine导出的FBX模型在MAX变小