真机测试时 有3d模型的界面尺寸就会错乱

用真机运行app  只要有加载3d模型的界面  界面的显示内容就会缩成一团  如下:

IMG_20200401_152046.jpg

 
 
而其他没有3d模型的显示就正常  我测试了一下  
一加上3d模型就开始有问题
问题代码:  _modePnl是场景里的节点   一执行addChild()这句话  界面布局就会乱   请问是什么问题呢
let { x, y } = this._modelPnl.localToGlobal(new Laya.Point(0, 0))
        let { x: x2, y: y2 } = this._modelPnl.localToGlobal(new Laya.Point(this._modelPnl.width, this._modelPnl.height))
        let w = x2 - x
        let h = y2 - y
        let bounds = new Laya.Rectangle(x, y, w, h) 
        let view = new ModelView(bounds, 130, 6, 65)
        this._modelPnl.addChild(view)
已邀请:

155*****553

赞同来自:

没想到我自己把他倒腾出来了。。   感觉laya的开发文档好不详细。。小白感觉好吃力呀
 
注释掉设置camera视图尺寸的代码  也就是
camera.viewport = new Laya.Viewport(rect.x, rect.y, rect.width, rect.height)这一行
 
然后节点就会全屏显示    但是模型也变得非常大    那就使用localScale将模型进行缩放显示好了  
 
这样就没有问题了。。

Laya_Aaron

赞同来自:

3d应该用的是 物理分辨率, 这个页面应该乘个缩放

155*****553

赞同来自:

我发现  这界面里的节点 都缩在设置的模型组件的大小和位置里显示了   也就是上面代码中的Laya.Rectangle(x, y, w, h) 这个框内

155*****553

赞同来自:

各位大神   继续求助   我又定位到了具体的问题   
就是在创建3d节点时   创建的camera组件   设置他的大小的时候,
原本是这样设置的:
let ratioW = Laya.RenderContext3D.clientWidth / Laya.stage.width
let ratioH = Laya.RenderContext3D.clientHeight / Laya.stage.height
rect.x *= ratioW
rect.y *= ratioH
rect.width *= ratioW
rect.height *= ratioH
return rect 这个rect就是放3d模型的节点的位置的宽高 而我改成了这样之后:
rect.x = 0;
rect.y = 0;
rect.width = Laya.stage.width;
rect.height = Laya.stage.height;
return rect 直接设整个屏幕为大小 Camera的赋值:
camera.viewport = new Laya.Viewport(rect.x, rect.y, rect.width, rect.height) 我改成整个屏幕为大小后 界面其他节点的显示就正常了 但这个3d模型的形象就变得很大。。

该问题目前已经被锁定, 无法添加新回复

商务合作
商务合作