@Bully55
JavaScript developer (React)

Почему текстура в three.js не расстягивается на всю поверхность?

5e1f04ee34b8e118968747.png
При наложении текстуры она располагается ровно по центру с начальными размерами, но не расстягивается на всю площадь модели.
let scene = new THREE.Scene()
        let camera = new THREE.PerspectiveCamera( 75, window.innerWidth/window.innerHeight, 0.1, 1000 )
        let renderer = new THREE.WebGLRenderer({ antialias: true })
        let controls = new OrbitControls(camera, renderer.domElement)

        camera.position.set( 0, 0, 100 )
        controls.update()

        renderer.setClearColor(0x808080)
        renderer.setSize( window.innerWidth - 400, window.innerHeight - 150 )
        this.container.appendChild( renderer.domElement )

        let amColor = "#faffe3"
        let amLight = new THREE.AmbientLight(amColor)
        scene.add(amLight)

        let light = new THREE.DirectionalLight( 0xfff7e8, 1 )
        scene.add(light)

        let manager = new THREE.LoadingManager()
        let imageLoader = new THREE.ImageLoader(manager)

        let texture = new THREE.Texture()

        imageLoader.load(`./static/objects/text1.jpg`, (image) => {
            texture.image = image
            texture.needsUpdate = true
        })

        let meshes: THREE.Mesh[] = []

        let objLoader = new OBJLoader()

        objLoader.load(
            "./static/objects/LivingRoom_WallAttach.obj",
            ( object ) => {
                console.log(object)
                
                object.traverse((child) => {
                    if( child instanceof THREE.Mesh )
                        meshes.push(child)
                })

                let wall = meshes[0]

                wall.position.x = -860
                wall.position.y = -260
                wall.position.z = 200

                scene.add( wall )

                texture.repeat.set(1, 1)
                wall.material = new THREE.MeshPhongMaterial({
                    map: texture
                })

                renderer.render( scene, camera )
            },
            ( xhr ) => {
                console.log( (xhr.loaded / xhr.total * 100) + '% loaded' )
            },
            ( err ) => {
                console.error( 'An error happened' )
            }
        )

        function animate() {

            requestAnimationFrame( animate )
        
            controls.update()
        
            renderer.render( scene, camera )
        
        }
        animate()
  • Вопрос задан
  • 24 просмотра
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
Sarex Москва
от 140 000 до 210 000 руб.
от 2 000 до 2 500 usd.
Stream Labs Москва
До 150 000 руб.
26 янв. 2020, в 05:37
65000 руб./за проект
26 янв. 2020, в 01:08
9700 руб./за проект
26 янв. 2020, в 00:25
10000 руб./за проект