// 程序入口
class LayaAir3D {
private _quaternion: Laya.Quaternion = new Laya.Quaternion();
constructor() {
//初始化引擎
Laya3D.init(0, 0, true);
//适配模式
Laya.stage.scaleMode = Laya.Stage.SCALE_FULL;
Laya.stage.screenMode = Laya.Stage.SCREEN_NONE;
let ape: Laya.Sprite = new Laya.Sprite();
Laya.stage.addChild(ape);
ape.loadImage("../laya/assets/fish_bg.png");
//开启统计信息
Laya.Stat.show();
//添加3D场景
let scene: Laya.Scene = Laya.stage.addChild(new Laya.Scene()) as Laya.Scene;
//添加照相机
let camera: Laya.Camera = (scene.addChild(new Laya.Camera(0, 0.1, 1000))) as Laya.Camera;
camera.orthographic = true;
camera.transform.translate(new Laya.Vector3(0, 4, 8),false);
camera.transform.lookAt(new Laya.Vector3(0,0,0),new Laya.Vector3(0,1,0));
//创建方向光
var light:Laya.DirectionLight = scene.addChild(new Laya.DirectionLight()) as Laya.DirectionLight;
//移动灯光位置
light.transform.translate(new Laya.Vector3(-5,10,-5));
//设置灯光方向
light.direction = new Laya.Vector3(1, -1, 1);
//添加灯光投影
light.shadow=true;
//产生投影的范围(如过小将不会产生投影)
light.shadowDistance=100;
//生成阴影贴图数量
light.shadowPSSMCount = 1;
//模糊等级,越大越高,效果更好,更耗性能
light.shadowPCFType=10;
//投影质量
light.shadowResolution=2048;
//创建盒子模型
let box:Laya.MeshSprite3D = scene.addChild(new Laya.MeshSprite3D(new Laya.BoxMesh(5,5,1.5))) as Laya.MeshSprite3D;
//接受阴影
box.meshRender.receiveShadow=true;
// 创建球体模型
let sphere:Laya.MeshSprite3D = scene.addChild(new Laya.MeshSprite3D(new Laya.SphereMesh(.5))) as Laya.MeshSprite3D;
//按父空间移动球体
sphere.transform.translate(new Laya.Vector3(0,1.5,0),false);
//产生阴影
sphere.meshRender.castShadow=true;
//创建材质
let material:Laya.StandardMaterial = new Laya.StandardMaterial();
//材质加载漫反射贴图
material.diffuseTexture = Laya.Texture2D.load("res/layabox.png");
//为模型赋材质(单个材质可赋给多个模型)
sphere.meshRender.material = material;
box.meshRender.material = material;
}
}
new LayaAir3D();