Я пытаюсь создать собственное приложение, использующее expo, в котором я хочу иметь плоскость, которую я могу перемещать и увеличивать и уменьшать, как карту, я использую Three в качестве своего трехмерного движка, так как он мне нужен иметь возможность вращаться в трехмерном пространстве. У меня в приложении в качестве начала вращается 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, но я не знаю, чем заменить это.
Любая помощь приветствуется.