Экспо Три. js OrbitControls - PullRequest
       16

Экспо Три. js OrbitControls

0 голосов
/ 17 февраля 2020

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

Любая помощь приветствуется.

...