Tag Archive: tip


PV3D Culling & Clipping

今天来谈谈3D开发中的两个重要知识点Culling(剔除)和Clipping(切分)。

render

左图表示一个完整的3D渲染流程,可以看到Culling和Clipping处理发生在投射计算和渲染计算之前。

Culling过程是用于剔除不需要参与渲染的物体和三角面,从而达到节约资源的目的。一般来说Culling分为以下4种:

  1. Frustum culling:视锥剔除,PV3D里最重要的剔除方式,下面详述。
  2. Back-face culling:当面背对相机时候剔除,由PV3D自动执行。
  3. Contribution culling:当物体在画面上过小情况下的剔除,PV3D里面没有这种机制,但是可以用远平面(camera.far)来剔除。
  4. Occlusion culling:包藏剔除,适用于一个物体完全被另一个物体遮挡的情况,PV3D不包含这种机制。

Frustum culling在PV3D中分两种:分别是基于camera(相机)和基于viewport(视口)的。

使用以下代码开启基于相机的剔除功能(DebugCamera是默认开启的):

camera.useCulling = true;

通过查看do3d.culled属性可以知道物体是否被剔除。要注意这种剔除机制是针对整个物体(do3d)计算的,只有当整个物体完全不在视锥内,才会被剔除。

View full article »

在使用Flash 3D的实际工作中,我们经常会需要在3D空间中摆放物体,或者是去匹配平面Layout。但是由于可视环境的缺乏,我们常常要:调参数——看效果——再调参数……周而复始,费时费力。能不能有更好的方法呢?本文就介绍一下使用常见的后期或三维软件来做Layout,再完美转换回Papervision 3D中的方法。

首先我们来看看After Effects(AE),AE的三维层功能用来摆平面那是相当方便快捷。下图中我建立了一个985×600的合成,然后随便摆放了两个平面。

viewport

想象一下左边平面贴一张图片,右边平面贴文字,是不是就是一个常见的3D场景呢?接下来,就跟我一起把这个Layout还原到Papervision 3D中去吧。

第一步是相机参数的匹配,在AE中打开相机参数设置窗口: View full article »

Interacting with Papervision 3D

本文讨论Papervision 3D中与鼠标互动相关的进阶问题:

  1. 3D物体的hit检测
  2. InteractiveSceneManager
  3. VirtualMouse
  4. Mouse3D

我们知道要让Papervision 3D的互动机制开始运作,必须满足以下两个条件:

  1. viewport.interactive = true;
  2. do3d.material.interactive = true;

然后我们就可以监听do3d发出的事件(InteractiveSceneEvent)。

那么Papervision 3D是怎样实现3D物体与鼠标的hit检测呢?

来看看Viewport类提供的以下实例方法:

  1. hitTestPoint2D()
  2. hitTestMouse()
  3. hitTestPointObject()

View full article »

Powered by KevinCao.com ©2010 | Platform: WordPress | Theme: Motion
kevincao.com