我在项目中使用 ViroCore AR库,当我检测到 AR Image 并将门 FBX模型加载到AR 门户,我的门模型在Y方向上倾斜,所以我没有得到什么问题。
当我单击飞机并从该位置获取这些矢量,然后将门模型放置在该位置上时。 我的代码是这样的:
private fun createDroidAtPosition(position: Vector) {
val light = OmniLight()
light.color = Color.WHITE.toLong()
light.position = Vector(0f, 1f, -4f)
mScene.rootNode.addLight(light)
val shipDoorModel = Object3D()
shipDoorModel.loadModel(
mViroView.viroContext,
Uri.parse(getDoorModel(mPoi.door_id)),
Object3D.Type.FBX,
object : AsyncObject3DListener {
override fun onObject3DLoaded(p0: Object3D?, p1: Object3D.Type?) {
Log.e(TAG, "onObject3DLoaded")
isDoorLoad = true
/**
* Hide layout
*/
mTrackListener.hideIsTrackingLayoutUI()
var videoPath = SharedPreferenceUtil.getMediaPath("" + mPoi.num)
if (videoPath.getFileExtensions().contains("mp4", true)) {
val parse = Uri.fromFile(File(videoPath))
videoTexture = VideoTexture(mViroView.viroContext, parse)
videoTexture.loop = true
videoTexture.play()
portalScene.setBackgroundTexture(videoTexture)
} else {
ImageLoader.getBitmap(
this@DoorImageWithSurfaceViroActivity,
Uri.fromFile(File(videoPath)),
object : ImageLoader.OnBitmapReady {
override fun onBitmapReady(bitmap: Bitmap) {
val beachTexture = Texture(bitmap, Texture.Format.RGBA8, true, false)
portalScene.setBackgroundTexture(beachTexture)
}
})
}
}
override fun onObject3DFailed(p0: String?) {
Log.e(TAG, "onObject3DFailed $p0")
showError("" + p0)
}
})
val portal = Portal()
portal.addChildNode(shipDoorModel)
portalScene = PortalScene()
portalScene.setPosition(shipDoorModel.convertLocalPositionToWorldSpace(position))
portalScene.setScale(Vector(0.2f, 0.2f, 0.2f))
portalScene.portalEntrance = portal
portalScene.isPassable = true
mScene.rootNode.addChildNode(portalScene)
}
在这样的输出下面,我想向我旋转那扇门