亚洲中字慕日产2020,大陆极品少妇内射AAAAAA,无码av大香线蕉伊人久久,久久精品国产亚洲av麻豆网站

資訊專欄INFORMATION COLUMN

透過(guò) three.js 在 Forge Viewer 里頭創(chuàng)建 3D 文字(使用部份 r81 的功能

xuhong / 2099人閱讀

摘要:但很不幸的,新功能要加入里頭這件事對(duì)于開(kāi)發(fā)團(tuán)隊(duì)而言絕非一件易事,是需要一些時(shí)間來(lái)完成的這篇文章將帶領(lǐng)大家用最少的工作量將上的新功能拿來(lái)上使用。在這個(gè)案例里頭,我們可以只將和其他相依文檔引入例如。

對(duì)于 Forge Viewer 比較熟悉的朋友可能知道 Forge Viewer 使用了一個(gè)自定的 three.js 第 r71 版,但最新版的 three.js 版號(hào)已經(jīng)來(lái)到 r81,所以在這兩版號(hào)間已經(jīng)有不少新功能被加到了 r81 版,是先前版本沒(méi)有的。但很不幸的,新功能要加入 Forge Viewer里頭這件事對(duì)于 Viewer 開(kāi)發(fā)團(tuán)隊(duì)而言絕非一件易事,是需要一些時(shí)間來(lái)完成的;這篇文章將帶領(lǐng)大家用最少的工作量將 r81 上的新功能拿來(lái) Forge Viewer 上使用。

這篇文章是從How can you add text to the Forge Viewer with three.js? 得到的靈感,這個(gè)開(kāi)發(fā)者想要在 Forge Viewer 的 Scene 里頭通過(guò)Three.js的 TextGeometry加入 3D 文字,但 Forge Viewer 所使用的 three.js 里頭有少一些相依的代碼或資源,這里我們使用 Webpack 這個(gè)代碼打包工具和 threejs-full-es6 這個(gè)套包來(lái)解決這個(gè)問(wèn)題,通過(guò)這兩個(gè)工具將 r81 或新版號(hào)的 three.js 功能引入你的 Forge 應(yīng)用里,當(dāng)然這邊不是把整個(gè) r81 的代碼搬過(guò)來(lái),而是只引入我們需要的部份。在這個(gè)案例里頭,我們可以只將 TextGeometry 、Font和其他相依文檔引入(例如Facetype.json)。

為了驗(yàn)證這個(gè)概念,下面是一個(gè)簡(jiǎn)單的 ES6 樣例,用來(lái)創(chuàng)建我們的 TextGeometry :

import { Font, TextGeometry } from "threejs-full-es6"
import FontJson from "./helvetiker_bold.typeface.json"

export default class TextExtension
  extends Autodesk.Viewing.Extension {

  /////////////////////////////////////////////////////////
  // Adds a color material to the viewer
  //
  /////////////////////////////////////////////////////////
  constructor (viewer, options) {

    super()

    this.viewer = viewer
  }

  load () {

    return true
  }

  unload () {

    return true
  }

  /////////////////////////////////////////////////////////
  // Adds a color material to the viewer
  //
  /////////////////////////////////////////////////////////
  createColorMaterial (color) {

    const material = new THREE.MeshPhongMaterial({
      specular: new THREE.Color(color),
      side: THREE.DoubleSide,
      reflectivity: 0.0,
      color
    })

    const materials = this.viewer.impl.getMaterials()

    materials.addMaterial(
      color.toString(),
      material,
      true)

    return material
  }

  /////////////////////////////////////////////////////////
  // Wraps TextGeometry object and adds a new mesh to
  // the scene
  /////////////////////////////////////////////////////////
  createText (params) {

    const geometry = new TextGeometry(params.text,
      Object.assign({}, {
        font: new Font(FontJson),
        params
      }))

    const material = this.createColorMaterial(
      params.color)

    const text = new THREE.Mesh(
      geometry , material)

    text.position.set(
      params.position.x,
      params.position.y,
      params.position.z)

    this.viewer.impl.scene.add(text)

    this.viewer.impl.sceneUpdated(true)
  }
}

Autodesk.Viewing.theExtensionManager.registerExtension(
  "Viewing.Extension.Text", TextExtension)

他的使用方法是:

import "./Viewing.Extension.Test"

// ...

// 載入擴(kuò)展
viewer.loadExtension("Viewing.Extension.Test").then((extension) => {

    // 創(chuàng)建 3D 文字
    extension.createText({
      position: {x: -150, y: 50, z: 0},
      bevelEnabled: true,
      curveSegments: 24,
      bevelThickness: 1,
      color: 0xFFA500,
      text: "Forge!",
      bevelSize: 1,
      height: 1,
      size: 1
    })
})

如果想要?jiǎng)?chuàng)建自個(gè)的 Facetype.json,可以透過(guò)這個(gè)網(wǎng)站來(lái)幫忙:http://gero3.github.io/facety...

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://www.ezyhdfw.cn/yun/107145.html

相關(guān)文章

  • 自訂義 Forge Viewer ModelStructurePanel 交互行為

    摘要:在官方釋出版的同時(shí)發(fā)布了新版本的,這個(gè)面版已被整個(gè)重新改寫,這次更新也加入一些新的交互行為,下面我們將會(huì)稍作解釋。 這禮拜的小技巧是關(guān)于如何以不加入太多的 JavaScript 的方式自訂義 ModelStructurePanel 的交互行為,這個(gè)小技巧受到這篇問(wèn)與答的啟發(fā):Prevent zoom in Forge viewer when clicking in Model Brow...

    xialong 評(píng)論0 收藏0
  • Forge Viewer 里切換模型視圖(Viewables)

    摘要:有提供類似的功能,但這并不包含在里頭。條列清單或是切換視圖是非常容易的,你主要是要建立一個(gè)使用者介面讓使用者去選取他們想觀看的內(nèi)容。我使用了來(lái)確保當(dāng)前載入模型占用的內(nèi)存可以都被釋出。 此篇文章原作是 Autodesk ADN Philippe Leefsma,以下以我簡(jiǎn)稱。 這有一個(gè)簡(jiǎn)易的博客用來(lái)說(shuō)明一個(gè)我剛加入 https://forge-rcdb.autodesk.io 的一個(gè)新功...

    BlackHole1 評(píng)論0 收藏0
  • Forge Viewer 里展示/隱藏構(gòu)件材質(zhì)

    摘要:對(duì)于大多數(shù)的模型文檔都可以透過(guò)服務(wù)提取轉(zhuǎn)換在里渲染構(gòu)件外觀時(shí)所需的材質(zhì)及貼圖。所以我們可以透過(guò)它遍歷所有材質(zhì),找出我們想隱藏貼圖的那些材質(zhì),將它的顏色設(shè)置為灰色,同時(shí)也可以透過(guò)它將隱藏貼圖的材質(zhì)回復(fù)。 這篇文章來(lái)自 Autodesk ADN 的梁曉冬,以下以我簡(jiǎn)稱。 對(duì)于大多數(shù)的模型文檔都可以透過(guò) Autodesk Forge Model Derivative 服務(wù)提取、轉(zhuǎn)換在 Vie...

    Dean 評(píng)論0 收藏0
  • 使用 Forge Viewer 序列中聚合多模型

    摘要:但模型載入程序并不是同步執(zhí)行的載入文檔和幾何等動(dòng)作在里都是異步的,我們沒(méi)辦法知道哪一個(gè)模型是第一個(gè)被完整載入,和下個(gè)一個(gè)完全載入的是誰(shuí)而在一些應(yīng)用場(chǎng)景里是有可能需要在一個(gè)序列聚合多個(gè)模型。 showImg(https://segmentfault.com/img/bVVaPI?w=600&h=390); 此篇博客原著為 Autodesk ADN 的梁曉冬,以下以我簡(jiǎn)稱。 我的同事創(chuàng)作了...

    graf 評(píng)論0 收藏0
  • Revit 里重現(xiàn) Forge Viewer相機(jī)狀態(tài)

    摘要:最近,我收到一個(gè)客戶的需求,希望可以把的相機(jī)狀態(tài)通過(guò)還原到里。因?yàn)闆](méi)有直接的方法可以修改相機(jī)的值。的相機(jī)視角比的相機(jī)視角寬。調(diào)用以取得焦距。因此,裁剪區(qū)域的范圍計(jì)算為寬度視圖的相機(jī)焦距。高度常規(guī)相機(jī)片幅的比例。 最近,我收到一個(gè)客戶的需求,希望可以把Viewer的相機(jī)狀態(tài)通過(guò)Revit API還原到Revit里。所以我們來(lái)看看要如何實(shí)現(xiàn)這個(gè)要求。在開(kāi)始之前,你要先知道一些有關(guān)于Revi...

    劉福 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<