还有我用已经可以导入的场景模型,按照官方demo的代码加上去,一加载就黑屏,怎么回事呢? 用传统相机可以看得到场景的,用VR就成黑屏了,连天空都看不到, 附件有场景模型文件
Laya3D.init(0, 0,true);
Laya.stage.scaleMode = Laya.Stage.SCALE_FULL;
Laya.stage.screenMode = Laya.Stage.SCREEN_HORIZONTAL;
Laya.Stat.show();
//var scene = Laya.stage.addChild(new Laya.Scene.load("cj02/LastHopeScene.ls"));
var scene = Laya.stage.addChild(new Laya.Scene());
var camera = scene.addChild(new Laya.VRCamera( 0.03,0, 0, 0.1, 100));
camera.transform.translate(new Laya.Vector3(0.3, 0.3, 0.6));
camera.transform.rotate(new Laya.Vector3(-12, 0, 0), true, false);
camera.clearFlag = Laya.BaseCamera.CLEARFLAG_SKY;
camera.addComponent(VRCameraMoveScript);
/*
var camera = (scene.addChild(new Laya.Camera()));
camera.transform.translate(new Laya.Vector3(93, 64, -33));
camera.transform.rotate(new Laya.Vector3(0.05, 155, 0), true, false);
camera.clearColor = null;
camera.clearFlag = Laya.BaseCamera.CLEARFLAG_SKY;
camera.addComponent(CameraMoveScript);
*/
var skyBox = new Laya.SkyBox();
skyBox.textureCube = Laya.TextureCube.load("res/sky/skyCube.ltc");
camera.sky = skyBox;
var sprite3D = scene.addChild(Laya.Sprite3D.load("cj03/LastHopeScene.lh"));
//sprite3D.transform.localScale = new Laya.Vector3(0.2, 0.2, 0.2);
sprite3D.once(Laya.Event.HIERARCHY_LOADED, null, function(sprite) {
//console.log(scene.numChildren+","+sprite._childs.length);
setMeshParams(sprite, Laya.StandardMaterial.RENDERMODE_OPAQUE, new Laya.Vector4(3.5, 3.5, 3.5, 1.0), new Laya.Vector3(0.6823, 0.6549, 0.6352), new Laya.Vector2(25.0, 25.0), "TERRAIN");
//setMeshParams(sprite, Laya.StandardMaterial.BLENDEQUATION_REVERSE_SUBTRACT, new Laya.Vector4(3.5, 3.5, 3.5, 1.0), new Laya.Vector3(0.6823, 0.6549, 0.6352), new Laya.Vector2(25.0, 25.0), "TERRAIN");
});
function setMeshParams(spirit3D, renderMode, albedo, ambientColor, uvScale, shaderName) {
if (spirit3D instanceof Laya.MeshSprite3D) {
var meshSprite = spirit3D;
var mesh = meshSprite.meshFilter.sharedMesh;
if (mesh) {
//可采用预加载资源方式,避免异步加载资源问题,则无需注册事件。
for (var i = 0; i < meshSprite.meshRender.sharedMaterials.length; i++) {
var mat = meshSprite.meshRender.sharedMaterials[i];
var transformUV = new Laya.TransformUV();
transformUV.tiling = uvScale;
(shaderName) && (mat.setShaderName(shaderName));
mat.transformUV = transformUV;
mat.ambientColor = ambientColor;
mat.albedo = albedo;
mat.renderMode = renderMode;
}
}
}
for (var i = 0; i < spirit3D._childs.length; i++){
setMeshParams(spirit3D._childs[i], renderMode, albedo, ambientColor, uvScale, shaderName);
}
}