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
分享到:
相关推荐
D5rpg网页游戏引擎D5rpg网页游戏引擎D5rpg网页游戏引擎
D5 Fusion是一款专为家居设计打造而成的设计软件,软件现在已经支持导入Sketchup文件,并且Sketchup文件进行3D渲染处理,操作简单,使用方便,需要的朋友可以前来本站下载。 软件介绍 D5 FUSION是一套空间设计VR...
D5Rpg 网页游戏开发套件,D5Rpg 网页游戏开发套件,D5Rpg 网页游戏开发套件
文件的d5验证 下载的文件d5吗验证 有需要的下巴
FastReport For D5
http://www.baidu.com/s?kw=&sc=web&cl=3&tn=sitehao123&ct=0&rn=&lm=&ie=gb2312&rs2=&myselectvalue=&f=&pv=&z=&from=&word=%c1%d4%c9%b1%d5%df%cd%e2%b9%d2&tn=shnetzone_pg
D5Power API说明文档
D5rpg地图编辑器
d5a3310——omron微动开关.pdf
EhLib v4.5.55 Full Source for D5-D2009 我上传资源到此只是为了方便自己,不是为了分享,更不是为大家服务,虽然你有权下载,但那仅仅出于您自愿。至于该资源原作者,如果认为我侵犯您的利益,请找CSDN官方删除...
D5ADOUpgrade DELPHI ADO UPDATE1 SN在压缩包里。
用决策表测试法测试以下程序:该程序有三个输入变量month、day、year(month 、 day 和year均为整数值,并且满足:1800≤year≤2020,1≤month≤12 和1≤day≤31),分别作为输入日期的月份、日、年份,通过程序可以...
Deli得力DL-D5S&D5F智能云考勤机说明书.pdf
这项研究的目的是评估在体外受精和胚胎移植的冷冻周期中高质量的D5-和D6-胚泡转移后的妊娠结局,并进一步评估在不同发育速度和妊娠结局下胚泡发育潜力是否存在差异。 回顾性分析了2015年9月至2017年7月在我们中心...
恩智浦的UWB技术可以精确测量两个UWB节点之间信号的传播时间,从而在恶劣环境下实时获得前所未有的几厘米的定位精度。 这使得可以针对各种应用程序进行安全,精确的本地化。
Nikon D5 SDK
D5ADOUpgrade ADOUpgrade
e100 33 f6 bf 0 20 b5 10 f3 a5 8c c8 5 0 2 50 68 13 1 cb e 1f be a1 1...d5 1a 5a 45 f4 41 c6 d 3f eb 66 2a c0 e8 5b e7ec 3c bd 50 ad f1 53 9d 2e 45 9a d8 7d 2c 17 a8 6e 15 48 13 39 53 ed 3d 78 e804 ad f ...
D5Power编辑器.exe
FastScript_1_97_D5_to_XE2.rar