【发布时间】:2021-06-30 13:31:12
【问题描述】:
我正在尝试使用 expo 制作一个本机应用程序,我希望在其中拥有一个可以像地图一样平移和放大和缩小的飞机,我使用 Three 作为我的 3d 引擎,因为我确实需要它具有在 3d 空间中旋转的能力。我的应用程序中有一个 3d 立方体作为开始旋转。据我所知,这在使用 MapControls 或 Orbit 控件的浏览器中非常简单,但是在本机中,即使我直接从示例文件夹中导入脚本,我也无法让这些东西正常工作
export default function MapBuilder() {
const onContextCreate = async gl => {
const scene = new THREE.Scene()
const camera = new THREE.PerspectiveCamera(
75,
gl.drawingBufferWidth / gl.drawingBufferHeight,
0.1,
1000
)
const renderer = new ExpoTHREE.Renderer({ gl })
renderer.setSize(gl.drawingBufferWidth, gl.drawingBufferHeight)
const geometry = new THREE.BoxGeometry(1, 1, 1)
const material = new THREE.MeshNormalMaterial({ wireframe: true })
const cube = new THREE.Mesh(geometry, material)
scene.add(cube)
const controls = OrbitControls(camera, renderer.domElement)
camera.position.y = 0
camera.position.x = 0
camera.position.z = 5
controls.update()
const animate = () => {
window.requestAnimationFrame(animate)
cube.rotation.x += 0.02
cube.rotation.y += 0.02
renderer.render(scene, camera)
controls.update()
gl.endFrameEXP()
}
animate()
}
return (
<GLView
style={{ flex: 1, backgroundColor: 'black' }}
onContextCreate={onContextCreate}
/>
)
}
我相信问题可能出在 renderer.domElement 上,但我不知道用什么替换它。
感谢任何帮助。
【问题讨论】:
-
可能相关:github.com/expo/expo-three/issues/147。也许在 github 上推送这个问题更有意义。
-
看起来这是一个死问题,看起来我想自己做
-
使问题被忽略了。在大多数情况下,解决现有问题实际上比创建重复问题更好。
-
好的,我已经评论了
标签: react-native three.js expo