当前位置: 首页 > 工具软件 > Away3D > 使用案例 >

away3d 4x开发20要点

丁灿
2023-12-01

1:原有的DefaultMaterialBase改为了SinglePassMaterialBase类;
2:只有继承自EffectMethodBase类的Method可用addMethod进行添加;比如EnvMapMethod,RimLightMethod等;
3: 给场景mesh添加阴影需要将method加入到shadowMethod属性;同时指定投影的灯光必须添加到场景;
4:仅仅是对物体进行灯光效果模拟则不需要将灯光加入场景;
5:EffectMethodBase类似与调整或改变物体的外观,类似与滤镜;而speculer,shadow,normal等更底层的外观改动不算在其中;从实现上区分猜想EffectMethodBase通过相应的shader进行外观调整;不需要与外界发生联系;
6:使用Loader3D可快速加载各类模型文件。
7:要实现更加灵活的控制可使用AssetLibrary。实际上Loader3D加载的模型也是保存在这个类中(可选)加载完毕后可以使用getAsset方法获得相应的模型;模型名称为在编辑软件中设置的名称;
8:加载模型需要设置相应的Parser进行解析;通过enableParser方法设置;所有的Parser保存在away3d.loaders.parsers中;
9:实现动态纹理,水面动态:为模型贴图加入SimpleWaterNormalMethod方法;并给予一个持续的驱动修改方法实例的water1OffsetX water2OffsetX的值。加入的步不要太大一般在0.001到0.01之间;
10:使用FollowController可实现物体的追踪,追踪过程通过tiltAngle调整追踪角度;
11:通过AssetLibrary的loadData方法可加载(解析)嵌入文件的三维模型数据;如果也嵌入模型贴图则需要指定AssetLoaderContext对象;通过AssetLoaderContext的mapUrlToData(“name”,new 嵌入名)方法设定要绑定模型的贴图;
12:通过AssetLoaderToken可进行加载(解析)进度的监控;给AssetLoaderToken加入LoaderEvent.RESOURCE_COMPLETE监听;
13:嵌入([Embed source="",mimeType=“application/octet-stream”])的图片数据即使实例化也不能直接作为BitmapData使用(这与导入到库并设置为Bitmap导出不相同)需要loader对其解码才可转为BitmapData;
14:使用MouseEvent3D可通过鼠标对屏幕中的3维物体进行交互;
15:新版本中Weld将不含静态方法,用户要使用其功能必须创建该类的实例;
16:设置物体透明度可使用material的alphaBlend属性以及alphaThreshold属性;
17:View3D的width和height属性直接影响到stage3D的绘图尺寸;
18:View3D的stage3DProxy属性是Stage3D的代理;
19:建立反光材质需要用EnvMapMethod,所以建立玻璃材质只需要在这个基础上追加一个透明度就行了,为了达到较好的效果可设置材质的bothSides属性为true进行双面显示;
20:构建away3d和starling协同操作的程序,首先使用away3d.core.managers.Stage3DManager的getInstance方法得到Stage3DManager实例,然后调用实例的getFreeStage3DProxy方法构建away3d.core.managers.Stage3DProxy实例;这样可得到协同工作用的Stage3D对象代理;然后给Stage3DProxy添加一个away3d.events.Stage3DEvent.CONTEXT3D_CREATED类型的监听;确保Context3D可用;在处理方法中创建away3d场景(设置View3D的shareContext属性为true进行协作)与starling场景;创建starling场景时需要传入画面尺寸(Stage3DProxy对象的viewPort(Rectangle))以及Stage3DProxy的stage3D属性给starling;例如:starling=new Starling(GUI,stage,myproxy.viewPort,myproxy.stage3D);接下来构建一个持续的驱动给场景渲染结果:首先,创建Event.ENTER_FRAME监听;并按顺序渲染结果;先调用Stage3DProxy的clear方法清场;对于view3D只需调用render方法;对于starling则调用nextFrame方法;最终调用Stage3DProxy的present方法呈现结果;

 类似资料: