Javascript 为什么我的飞机要剪我的OBJ?

Javascript 为什么我的飞机要剪我的OBJ?,javascript,reactjs,three.js,Javascript,Reactjs,Three.js,我目前正在使用three.js和react进行一个项目 我必须加载一个OBJ并显示它。一切都很好,直到我尝试在场景中添加更多元素,使其更加美丽 只要我添加另一个网格,如平面或长方体(在本例中为长方体),我的OBJ就会被剪切,我们只能看到裤子的纽扣。有人能解释一下为什么会这样吗?我找不到任何理由让飞机或箱子来切割我的obj 下面是我用来加载对象的两个函数。我知道我并没有在应该的时候使用setState,现在只是为了kick原型 createPlane = (scene) => {

我目前正在使用three.js和react进行一个项目

我必须加载一个OBJ并显示它。一切都很好,直到我尝试在场景中添加更多元素,使其更加美丽

只要我添加另一个网格,如平面或长方体(在本例中为长方体),我的OBJ就会被剪切,我们只能看到裤子的纽扣。有人能解释一下为什么会这样吗?我找不到任何理由让飞机或箱子来切割我的obj

下面是我用来加载对象的两个函数。我知道我并没有在应该的时候使用setState,现在只是为了kick原型

createPlane = (scene) => {
        var planeGeometry = new THREE.BoxGeometry( 1, 1, 1 );
        const planeMaterial = new THREE.MeshBasicMaterial({color: '#E8E8E8', side: THREE.DoubleSide})
        this.setState({plane:new THREE.Mesh(planeGeometry, planeMaterial)}, () => {
            this.state.plane.frustumCulled = false;
            this.state.plane.scale.set(1, 1, 1);
            scene.add(this.state.plane)
        })
    }


 loadObj = (scene) => {
        //const loader = new OBJLoader()
        const mtlloader = new MTLLoader()
        const textureLoader = new THREE.TextureLoader()
        textureLoader.load('models/jeans2_tex.png', (tex) => {
            tex.wrapS = THREE.RepeatWrapping;
            tex.wrapT = THREE.RepeatWrapping;
            //tex.repeat.set( 4, 4 );
            new OBJLoader().load('models/Jeans2_blue.OBJ', (object) => {
                    console.log('TEXTURE', tex)
                    console.log('OBJECT', object)
                    //let new_mat = new THREE.MeshBasicMaterial( {map: tex, side: THREE.DoubleSide} )
                    let new_mat = new THREE.MeshStandardMaterial({map: tex, metalness: 0.1, roughness: 0.9})
                    object.position.y = -2.0
                    object.frustumCulled = false
                    object.children.map((child) => {
                        console.log('CHILD')
                        child.material = new_mat
                    })
                    this.setState({object: object}, () => {scene.add(this.state.object)})

                }, (xhr) => {
                    console.log((xhr.loaded / xhr.total * 100) + '% loaded')
                },
                (error) => {
                    console.log('AN error happened')
                }
            )
        })

这只是一个暗中操作,但是当您执行
This.setState({object:object})时,您确定没有混淆React框架吗
object
是JavaScript中的保留关键字,当您将
plane
设置为状态时,它可能会覆盖以前的
object
。尝试
this.setState({jeans:object})
@Marquizzo
Object
(大写O)是保留字,
Object
(小写O)可以。