D5的PV3D日记—DAY1

D5的PV3D日记—DAY1


让我的DAE动起来



渲染3D场景的必备工具:

摄象机、舞台、物体、渲染器。

所以,必须要通过PV3D来实现这些东西。在PV3D 2.0中,已经不需要在定义一个Sprite来做3D的“容器”,取而代之的是Viewport3D对象:
复制内容到剪贴板
代码:
import org.papervision3d.view.Viewport3D;
......
public var pViewPort:Viewport3D;

......

public function init():void
{
        pViewPort = new Viewport3D();
        addChild(pViewPort);
        ......
}
接下来,我们可以去实现摄象机、舞台和渲染器:
复制内容到剪贴板
代码:
import org.papervision3d.cameras.Camera3D;
import org.papervision3d.render.BasicRenderEngine;
import org.papervision3d.scenes.Scene3D;
......
public function init():void
{
        ......
        scene = new Scene3D();  //实现3D场景
        camera = new Camera3D(); // 实现3D摄象机
        camera.z = -5;       
                       
        renderer = new BasicRenderEngine(); //实现渲染引擎
        ......
}
这些内容都有了之后,就可以渲染场景啦,渲染的命令非常简单:
复制内容到剪贴板
代码:
renderer.renderScene(scene,camera,pViewPort);
整理一下~本段的代码如下:
复制内容到剪贴板
代码:
packge
{
        import org.papervision3d.cameras.Camera3D;
        import org.papervision3d.render.BasicRenderEngine;
        import org.papervision3d.scenes.Scene3D;
        import org.papervision3d.view.Viewport3D;

        public class Hello3D extends Sprite
        {
                public var scene:Scene3D;
                public var camera:Camera3D;
                public var pViewPort:Viewport3D;
                public var renderer:BasicRenderEngine;

                public function Hello3D()
                {
                        build3D();
                }
               
                private function build3D():void
                {
                        pViewPort = new Viewport3D();
                        addChild(pViewPort);
                       
                        scene = new Scene3D();
                        camera = new Camera3D();
                        camera.z = -5;       
                       
                        renderer = new BasicRenderEngine();
                }

        }

}
但是这样舞台上是什么都没有的,所以就算渲染也渲染不出什么东西来,嘿嘿。我们需要一个主角来进行渲染。开启SWFIT3D 5.0,随便拖一个正方体出来,然后保存为PV3D的格式,即可在保存目录中找到*.dae文件。把它拿到刚才编写的代码这边来用一下吧。

要导入并渲染dae文件,我们首先要声明DAE对象,并告诉他DAE文件的路径:
复制内容到剪贴板
代码:
import org.papervision3d.objects.parsers.DAE;
.......
        public var daeFile:DAE;
        daeFile = new DAE();
        daeFile.load("box.dae");
......
接下来,我们要把这个DAE对象加到场景中去
复制内容到剪贴板
代码:
scene.addChild(daeFile);
再测试影片,还是什么都没有吗?奇怪吧?我也在这里耽误了很久。原来PV3D是不会自动给DAE加材质的,所以,渲染出来的实际是一个透明的东西。我们下面来给这个CUBE加个简单的材质
复制内容到剪贴板
代码:
        import org.papervision3d.materials.ColorMaterial;
        import org.papervision3d.materials.utils.MaterialsList;
......
        public var cm:ColorMaterial;
......
        cm = new ColorMaterial(0xcccccc, .85, true);
                       
        daeFile = new DAE();
        daeFile.load("box.dae",new MaterialsList({all:cm}));
最终的代码看起来应该是这样的:
复制内容到剪贴板
代码:
package
{
        import flash.display.Sprite;
        import flash.events.Event;
        // 包含PV3D相关的东东
        import org.papervision3d.cameras.Camera3D;
        import org.papervision3d.materials.ColorMaterial;
        import org.papervision3d.materials.utils.MaterialsList;
        import org.papervision3d.objects.parsers.DAE;
        import org.papervision3d.render.BasicRenderEngine;
        import org.papervision3d.scenes.Scene3D;
        import org.papervision3d.view.Viewport3D;
       
        public class Hello3D extends Sprite
        {
                public var scene:Scene3D;                        // 场景
                public var camera:Camera3D;                        // 摄象机
                public var daeFile:DAE;                        // DAE
                public var pViewPort:Viewport3D;                // 视点
                public var renderer:BasicRenderEngine;                // 渲染引擎
                public var cm:ColorMaterial;                        // 材质
               
                public function Hello3D()
                {
                        build3D();
                        buildObject();
                }
               
                private function build3D():void
                {
                        pViewPort = new Viewport3D();        // 声明视点
                        addChild(pViewPort);
                       
                        scene = new Scene3D();                // 声明场景
                        camera = new Camera3D();                // 声明摄影机
                        camera.z = -5;                        // 焦距。。我的理解,自己调整来的,呵呵
                       
                        renderer = new BasicRenderEngine();        // 渲染引擎
                }
               
                private function buildObject():void
                {
                        cm = new ColorMaterial(0xcccccc, .85, true);                // 材质
                       
                        daeFile = new DAE();
                        daeFile.load("box.dae",new MaterialsList({all:cm}));        // 加载模型
                       
                        scene.addChild(daeFile);                                // 放进舞台
                       
                        this.addEventListener(Event.ENTER_FRAME,loop_rander);        // 触发动作
                }
               
                public function loop_rander(e:Event):void
                {
                        daeFile.rotationZ+=2;
                        daeFile.rotationY+=2;
                        daeFile.rotationX+=2;
                        renderer.renderScene(scene,camera,pViewPort);        // 将DAE旋转,并渲染
                }
        }
}
附件中有代码下载,包含DAE文件,不过不包含PV3D,开发环境为FLEX3

PV3D 2.0的打包可以到论坛3D专区下载。地址 www.d5power.com
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
ava实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),可运行高分资源 Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现
C语言是一种广泛使用的编程语言,它具有高效、灵活、可移植性强等特点,被广泛应用于操作系统、嵌入式系统、数据库、编译器等领域的开发。C语言的基本语法包括变量、数据类型、运算符、控制结构(如if语句、循环语句等)、函数、指针等。下面详细介绍C语言的基本概念和语法。 1. 变量和数据类型 在C语言中,变量用于存储数据,数据类型用于定义变量的类型和范围。C语言支持多种数据类型,包括基本数据类型(如int、float、char等)和复合数据类型(如结构体、联合等)。 2. 运算符 C语言中常用的运算符包括算术运算符(如+、、、/等)、关系运算符(如==、!=、、=、<、<=等)、逻辑运算符(如&&、||、!等)。此外,还有位运算符(如&、|、^等)和指针运算符(如、等)。 3. 控制结构 C语言中常用的控制结构包括if语句、循环语句(如for、while等)和switch语句。通过这些控制结构,可以实现程序的分支、循环和多路选择等功能。 4. 函数 函数是C语言中用于封装代码的单元,可以实现代码的复用和模块化。C语言中定义函数使用关键字“void”或返回值类型(如int、float等),并通过“{”和“}”括起来的代码块来实现函数的功能。 5. 指针 指针是C语言中用于存储变量地址的变量。通过指针,可以实现对内存的间接访问和修改。C语言中定义指针使用星号()符号,指向数组、字符串和结构体等数据结构时,还需要注意数组名和字符串常量的特殊性质。 6. 数组和字符串 数组是C语言中用于存储同类型数据的结构,可以通过索引访问和修改数组中的元素。字符串是C语言中用于存储文本数据的特殊类型,通常以字符串常量的形式出现,用双引号("...")括起来,末尾自动添加'\0'字符。 7. 结构体和联合 结构体和联合是C语言中用于存储不同类型数据的复合数据类型。结构体由多个成员组成,每个成员可以是不同的数据类型;联合由多个变量组成,它们共用同一块内存空间。通过结构体和联合,可以实现数据的封装和抽象。 8. 文件操作 C语言中通过文件操作函数(如fopen、fclose、fread、fwrite等)实现对文件的读写操作。文件操作函数通常返回文件指针,用于表示打开的文件。通过文件指针,可以进行文件的定位、读写等操作。 总之,C语言是一种功能强大、灵活高效的编程语言,广泛应用于各种领域。掌握C语言的基本语法和数据结构,可以为编程学习和实践打下坚实的基础。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值