簡體   English   中英

在 Autodesk Forge 中無法看到 2D 文本精靈

[英]Unable to see 2D text sprites in Autodesk Forge

我正在嘗試在 Autodesk Forge 查看器中使用 Sprites 渲染 2D 文本,但無法顯示。 如果我通過控制台查詢圖層,我會看到它包含創建的 Sprite,但我在場景中看不到它。 我嘗試了不同的縮放比例和 position 設置,但沒有結果。

我附上以下代碼:

function createText(text, preferencia, tamanyo) {
    
    var sprite = spriteTexto("Prueba texto sprite", preferencia, tamanyo);
    
    if (!NOP_VIEWER.impl.overlayScenes['overlaySprites']) 
        NOP_VIEWER.impl.createOverlayScene('overlaySprites');
    
    NOP_VIEWER.impl.addOverlay('overlaySprites', sprite);
}


function spriteTexto(text, preferencia, tamanyo) {
    
    var fontface = NOP_VIEWER.fontName;
    var fontsize = 18;      //tamanyo
    var borderThickness = 4;
    var borderColor = { r:0, g:0, b:0, a:1.0 };
    var backgroundColor = { r:0, g:0, b:0, a:0.0 };
    var textColor = { r:0, g:0, b:255, a:1 };       //hexadecimalARgb(preferencia.color);

    var canvas = document.createElement('canvas');
    var context = canvas.getContext('2d');
    context.font = "Bold " + fontsize + "px " + fontface;
    var metrics = context.measureText( text );
    var textWidth = metrics.width;

    context.fillStyle   = "rgba(" + backgroundColor.r + "," + backgroundColor.g + "," + backgroundColor.b + "," + backgroundColor.a + ")";
    context.strokeStyle = "rgba(" + borderColor.r + "," + borderColor.g + "," + borderColor.b + "," + borderColor.a + ")";
    context.fillStyle = "rgba(" + textColor.r+", " + textColor.g + ", " + textColor.b + ", 1.0)";
    context.fillText( text, borderThickness, fontsize + borderThickness);

    var texture = new THREE.Texture(canvas);
    texture.needsUpdate = true;
    var spriteMaterial = new THREE.SpriteMaterial( { map: texture, useScreenCoordinates: false } );
    var sprite = new THREE.Sprite( spriteMaterial );
    sprite.scale.set(1*fontsize,1*fontsize,1*fontsize);
    sprite.position.set(5,5,6);
    return sprite;  
}

如果您能幫我找到錯誤,我將不勝感激,非常感謝您的幫助!

編輯: - - - - - - - - - - - - - - - - - - - - - - - -

我們想要渲染可以交互的 2D 文本(特別是 select、旋轉和移動)。

為此,目前我們正在使用網格(使用 MeshBasicMaterial、Mesh 和 TextGeometry),但事實證明,文本看起來並不十分清晰,它呈現出鋸齒,我們發現根據 API 參考,抗鋸齒不是適用於 2d。

這里有一些問題的例子,正如你所看到的,我們越遠離平面,文本看起來越糟糕(即使靠近它看起來也不完美):

在此處輸入圖像描述

在此處輸入圖像描述

在此處輸入圖像描述

我們試圖用 Sprites 進行表示文本的測試(盡管這意味着必須更改已經用網格完成的整個實現)以嘗試以另一種解決問題的方式來實現它。 但我們看到這也是不可能的。

那么我們如何糾正文本的渲染呢? 有沒有辦法修復它,或者這是我們在 2D 中所能得到的最多的? 我們已經嘗試搜索這方面的信息,但沒有找到任何有用的信息。

不幸的是,Forge Viewer 目前不支持THREE.Sprite 它使用自維護的 three.js r71 並刪除了我所知道的這種支持。

您能否詳細分享一下為什么要將THREE.Sprite與 Forge Viewer 一起使用的用例? 如果您不想公開分享,可以將其發送到forge (DOT) help (AT) autodesk (DOT) com

暫無
暫無

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

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