Three.js 3.js雕刻一个网格

Three.js 3.js雕刻一个网格,three.js,Three.js,我想要实时雕刻戒指服务。所以,我想知道如何在Three.js中雕刻戒指 我在gltf文件中带了一个环,然后我尝试了3csg.js,错误是不是凸的 这是示例代码 var ring, temp; THREE.DRACOLoader.setDecoderPath(''); THREE.DRACOLoader.setDecoderConfig({type:'js'}); var loader = new THREE.GLTFLoader(); loader.setDRACOLoader(new TH

我想要实时雕刻戒指服务。所以,我想知道如何在
Three.js
中雕刻戒指

我在gltf文件中带了一个环,然后我尝试了3csg.js,错误是
不是凸的

这是示例代码

var ring, temp;

THREE.DRACOLoader.setDecoderPath('');
THREE.DRACOLoader.setDecoderConfig({type:'js'});

var loader = new THREE.GLTFLoader();
loader.setDRACOLoader(new THREE.DRACOLoader());
loader.load('files/test.gltf', function(gltf){
    gltf.scene.traverse(function(child)){
        if(child.name === 'ring'){
            child.material = new THREE.MeshStandardMaterial({
                color : 0xffffff
            });
            ring = THREE.CSG.fromMesh(child);
            temp = child;
        }
    }
    scene.add(gltf.scene);
})

function engrave(text){
    var fLoader = new THREE.FontLoader();
    fLoader.load('font.json', function (font){
        var fGeometry = new THREE.TextGeometry(text, {
            ...
        });

        var fMaterial = new THREE.MeshStandardMaterial({
            ...
        });

        var font = new THREE.Mesh(fGeometry, fMaterial);

        var csg = THREE.CSG.fromMesh(font);

        var result = mesh.subtract(csg);

        temp.visible = false;
        scene.add(THREE.CSG.toMesh(result, fMaterial);
    });
}

我希望有人能回答我的问题。

最常用的三人CSG库存在一些问题,在某些情况下无法使用

我已经移植了我自己版本的CSG库,但这些问题较少。。也许你想试试这个图书馆


也许使用置换贴图是有意义的?@prisoner849我一直在考虑这个问题,但是gltf文件的uv贴图是不规则的。您使用哪个CSG库?据我所知,不应该有凸性要求。@manthrax我已经解决了这个错误,但还有另一个错误。我记得这可能是一个超出最大臀部尺寸的错误。