ActionScript
TypeScript
JavaScript

3D精灵基础

发布时间:2017-03-18

        3D精灵是LayaAir3D中的移动单元,同样也是渲染单元的载体,其派生关系包括父类Sprite3D,子类MeshSprite3D、ShuriKenParticle3D等,本文主要介绍Sprite3D,其和LayaAir2D中Sprite一样做为Stage节点树  中的子节点。

        

        1.Transform相关:Sprite3D通常的做为空节点存在,其主要作用是节点变换(旋转、平移、缩放),并会影响子节点的变换,包括MeshSprite3D等派生类的节点变换功能也继承自Sprite3D。 以下AS3代码简单演示了Sprite3D中的Transform使用,详见API文档 。

            var sprite3D:Sprite3D = new Sprite3D();
            var transform:Transform3D = sprite3D.transform;
            transform.localPosition = new Vector3(0, 0, 0);
            transform.localRotation = new Quaternion(0, 0, 0, 1);
            transform.localScale = new Vector3(1, 1, 1);
            transform.translate(new Vector3(1, 1, 1));
            transform.rotate(new Vector3(30, 60, 90), true, false);


        2. 激活显示相关:sprite3D可以灵活控制自身以及子节点的激活显示,包扩active、activeInHierarchy、layer等属性。

       (1)active包含get和set属性,可影响自身以及子节点是否在场景树中激活,详见API文档。

       (2)activeInHierarchy只有get属性,表明在节点树中是否激活,例:如自身的active属性为true,其父节点或更高层的节点active为false,其activeInHierarchy为false,详见API文档。

       (3)layer为所在摄象机显示层,其受摄像机的可视layer影响,其必需在摄象机中的可视layer中处于激活状态,详见API文档。

  


   3.组件相关:sprite3D可灵活添加组件或者脚本作为功能扩展或者逻辑编写,组件对于功能和开发逻辑的模块化管理十分适用,同样引擎也包含了很多内置组件,以下AS3代码简单演示了添加自定义脚本功能,详见API文档和示例D3Base_ScriptAndCameraSample。

       var sprite3D:Sprite3D = new Sprite3D();
       sprite3D.addComponent(CustomScript);


   4. 克隆相关:sprite3D以及派生子类均具有克隆功能,可以克隆并生成精灵的实例,以下AS3代码简单演示了精灵克隆功能,详见API文档和示例D3Base_StaticModel_InstantiateSample 。

       var sprite3D:Sprite3D = new Sprite3D();
       var cloneSprite3D:Sprite3D = Sprite3D.instantiate(sprite3D);

       或者

       var cloneSprite3D :Sprite3D=sprite3D.clone()。