簡體   English   中英

在Three.js中將3D文本減去為幾何

[英]Substract 3D text to a Geometry in Three.js

我想將3D文本轉換為Geometry,以便可以將其與CSG一起使用(我也使用Three.js CSG包裝器)將其從另一個對象中減去,如本問題所述

我的3D文字:

loader.load('optimer_regular.typeface.json', function (font){
    var text = new THREE.TextGeometry('Tayst', {
        font: font,
        size: 4,
        height: 3
    });
    var textMat = new THREE.MeshBasicMaterial({color: 0xffffff});
    var textGeo = new THREE.Mesh(text, textMat);
    textGeo.position.x = -7;
    textGeo.position.z = 6;
    scene.add(textGeo);
});

我想為3D文字做的減法操作(但這里是圓圈):

var dots = new THREE.Geometry();
    for(var i = 0; i < coordinates.length; i++){
        var coords  = coordinates[i];

        sphereMesh.position.x   = coords[0];
        sphereMesh.position.y   = coords[1];
        sphereMesh.position.z   = coords[2];

        sphereMesh.updateMatrix();
        dots.merge(sphereMesh.geometry, sphereMesh.matrix);
    }

var sphereCsg = THREE.CSG.toCSG(dots);

var resultGeo = THREE.CSG.fromCSG(resultCsg.subtract(sphereCsg));

cube = new THREE.Mesh(resultGeo, material);

但是,我認為我需要將文本轉換為真實的幾何圖形,以便減去它?

好吧,我發現使用已經擁有的庫,但是例如,我不必進行“合並”。

這是工作代碼(以防有人需要):

var loader = new THREE.FontLoader();
loader.load('helvetiker_regular.typeface.json', function (font){
    var text = new THREE.TextGeometry('Test', {
        font: font,
        size: 4,
        height: 0.5
    });
    var textGeo = new THREE.Mesh(text);
    textGeo.position.x = -5;
    textGeo.position.z = 7.5;

    var txtCsg = THREE.CSG.toCSG(textGeo);

    var resultGeo = THREE.CSG.fromCSG(resultCsg.subtract(txtCsg));

    cube = new THREE.Mesh(resultGeo, material);
    scene.add(cube);
});

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM