zoukankan      html  css  js  c++  java
  • Away3d学习笔记2三维世界的四个基本构件

    如同人是由骨架、肌肉、呼吸系统、血液循环系统这些必要东西构成一样,away3d世界,以下是必须的部分:view 视口 、scene 场景 、camera 摄像机 、3D物体.

    flash 3d,没近距离接触她之前我感觉她特神秘、特深奥;加之flash3d 引擎国外独大的局势,中文资料少之又少,flash3d对于国内用户来说,她真的很不平易近人!直至硬着头皮啃英文资料开始学习away3D(有很多主流flash3d引擎,如pvd3d、away3d、sandy。。但网上传away3d架构清晰,易学。所以我选她)。原来只要懂得as3,用away3D做三维东东并没有想象中的复杂。出于加深学习目的我写下这套笔记,同时希望可以给flash3d初学者带来帮助(本笔记基于away3d,但所有引擎机理都是差不多的,所以也适合其他引擎用户阅读)。

    如同人是由骨架、肌肉、呼吸系统、血液循环系统这些必要东西构成一样,away3d世界,以下是必须的部分:

    1、view 视口

    2、scene 场景

    3、camera 摄像机

    4、3D物体

    其中3D物体就是那些我们想要在三维世界里显示的内容。有内容了就要有放置“内容”的“舞台”,这个“舞台”就是场景。当然还要有摄像机把场景里的3D物体“录”下来。有了这些似乎万事俱备,但还欠东风!这个东风就是“视口”.视口相对前三者要难理解的多,我们不妨这样想下:”录“下来的“影像”不也得要通过电视机我们才能看到吗?对,视口你可以大概看成是电视机屏幕。

    我把这四者称为三维世界的四个基本构件。

    下面通过实例,说明away3d的基本构架。先看该例子的效果:

    点击观看

    再看源代码:

    package{

    //导入要用的类

    import flash.display.Sprite ;

    import flash.events.Event;

    import away3d.containers.View3D;

    import away3d.cameras.Camera3D;

    import away3d.containers.Scene3D;

    import away3d.primitives.Sphere;

    //定义输出flash高宽、背景等

    [SWF(width="500",height="400",frameRate="60",backgroundColor="#FFFFFF")]

    public class basicObjects extends Sprite{

    //申明几个后面会用到的变量;

    private var view:View3D;

    private var cam:Camera3D;

    private var sce:Scene3D;

    private var sphere:Sphere;

    public function basicObjects():void{

    //!!!!!新建四大基本构件!!!!!!!!!

    //新建摄像机

    cam=new Camera3D();

    //设置摄像机位置,为什么要设置、如何设置这里先不要关心

    cam.z=-1000;

    //新建场景

    sce=new Scene3D();

    //新建视口,并指定视口使用的摄像机、场景等。

    view=new View3D({camera:cam,scene:sce,x:250,y:200});

    //新建3D物体,这里新建了一个球Sphere,sphere是away3D内置的一种3D基本元素。

    sphere=new Sphere();

    //!!!!!!四大基本构件之二:视口与3D物体一定加入显示列表!!!!!

    //将view添加到舞台、sphere添加到场景。

    addChild(view)

    sce.addChild(sphere);

    //!!!!一定要“渲染”才行哟!!!!!!

    //渲染视口

    view.render();

    }

    }

    }

    看过加注释的源代码,大家对这代码的理解也就八九不离十了。下面对这些代码作必要的分析。

    代码主要可分为三步:

    一、新建四大基本构件。

    既然是三维世界里不可或缺的四大基本构件,我们当然要把它创建出来。

    二、显示view与3D物体

    与flash里一样,必须把要显示的对象实例添加到各级显示列表里。view添加到舞台、3D物体(本例是球sphere)添加到场景。

    三、渲染视口

    电脑里的“三维”其实不是真的三维。你想呀,电脑屏幕是个平面当然不可能像科幻片里的全息音像那样呈现三维!电脑里的三维实质是通过“透视法”将三维物体“投影”到二维屏幕,见下图。在视口没有用其方法(view.render();)之前,所有数据都是三维数据,渲染就是将三维数据“透视“成二维以便能显示在二维的屏幕上。记住,最后一步——渲染!它是实现的电脑三维魔力的所在。

    本图来源:flb3D.com

  • 相关阅读:
    compareTo冒泡比较时间字符串
    RestTemplate
    poi 处理空单元格
    Linux执行Java文件
    cmd 运行 java 文件
    @RequestParam 引发的编译问题
    linux 下安装与使用
    ajax请求 Provisional headers are show
    JWT加密
    Web API Filter
  • 原文地址:https://www.cnblogs.com/nooon/p/1458665.html
Copyright © 2011-2022 走看看