
























1:场景Scene
Scene是在3D空间由3D对象组成的一个整体。你可以认为它是有x、y、z三个有的flash舞台,每个你希望可以看到的对象都应该添加到场景。如果你不把对象添加到场景,那么这些对象是不会显示在你的屏幕上的。
2:摄像机Camera
你可以认为这是真正的摄像机,它在 3d 空间中不断的记录场景的活动.摄影机确定了查看场景的
点.因为3d空间的相机不是可视对象,它不是场景的组成部分不必添加它.摄影机可以像真实的相机
一样缩放和聚焦.
3d空间的相机可以做更多的事.如,在3d中对象距离相机过近或过远时将剔除此对象防止它被
渲染.相机可以忽略某些在不可见区域的对象.这些都是出于性能考虑的.对象距离太远或处于相机
后面,不需来记录,这时会节省很多计算的资源.
3:观察口 Viewport
观察口是一个舞台上的sprite容器,输出相机记录下来的对象.对象介绍中,观察口好比相机的镜头.
镜头是我们放在 3d 场景上面的窗口.
我们可以缩小这个窗口则可以只看到 3d 场景的一小部分,放大一些就看的多一些.观察口如现实中
真实窗口一样—窗口越大看到的外面世界越大,它影响到我们究竟可以看到多少场景.
要把渲染结果输出到屏幕上我们需要一个 场景,摄像机,观察口,有材质的 3d
对象,和一个渲染引擎.
package {
import flash.display.Sprite;
import flash.events.Event;
import org.papervision3d.cameras.Camera3D;//摄像机
import org.papervision3d.objects.primitives.Sphere;
import org.papervision3d.render.BasicRenderEngine;//引擎
import org.papervision3d.scenes.Scene3D;//场景
import org.papervision3d.view.Viewport3D;//观察口
public class FirstApplication extends Sprite
{
使用更短的代码:
每次我们准备创建一个 Papervision3D 应用我们可以拷贝这个类到新的应用中去.但有没有更简洁的方式呢?每个
Papervision3D 项目都包含了基本的组件—摄影机、场景、渲染器、观察口.每次定义并引入这些类都在重复劳动.聪明的程序员便想办法找出一个更高效的方案.很幸运,Papervision3D
包含了一个 BasicView 类.此类包含我们需要的基本组件.BasicView 是继承自 Sprite 的,我们可以实例化它并加入到舞台去或用来扩展我们的文档类.本书将使用它.
package {
import flash.events.Event;
import org.papervision3d.objects.primitives.Sphere;
import org.papervision3d.view.BasicView;
public class BasicViewExample extends BasicView
{
private var sphere:Sphere;
public function BasicViewExample()
{
stage.frameRate = 40;
sphere = new Sphere();
scene.addChild(sphere);
startRendering();
}
override protected function onRenderTick(e:Event=null):void
{
sphere.localRotationX +=1;
super.onRenderTick();
}
}
}
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。