原创 three.js 04-03 之聯合材質

    在上一篇介紹基於深度着色的 MeshDepthMaterial 材質時,提到可以將它與其他材質組合使用,從而可以創建出逐漸消失的效果。本篇就是要介紹這種用法,我們稱之爲聯合材質。這個很好理解,舉個例子,假設我們在前一篇示例的基礎上

原创 three.js 05-09 之 PolyhedronGeometry 幾何體

    今天是最後一篇介紹 three.js 中常用的基礎幾何體。本篇將要介紹的是 PolyhedronGeometry 幾何體。翻譯成中文就叫多面體。多面體是一種只有平面和直邊的幾何體。多數情況下我們不會使用這種幾何體,因爲 three

原创 three.js 04-04 之 MeshFaceMaterial 材質

    這一篇將要介紹的內容是如何爲物體的每一個面單獨指定材質。也許一些老資格的 three.js men 會想到 MeshFaceMaterial 材質。但在新版 three.js 中已經不存在這種材質了,因爲原則上來講,舊版中的 Me

原创 three.js 04-08 之 ShaderMaterial 材質

    今天我們將要介紹的高級材質叫 THREE.ShaderMaterial (我把它翻譯成自定義着色器材質)。它是 three.js 庫中功能最爲豐富、也是最爲複雜的一種高級材質。通過它,可以定義自己的着色器,直接在 WebGL 環境

原创 Ubuntu 18.04 LTS ulimit 修改不生效的問題

    玩過 Ubuntu Linux 系統的人都知道,更改系統的 open files 最大限制,一般都是通過以下方法來做: 第一步:打開終端並敲入以下命令以打開一個配置文件 $: sudo gedit /etc/security/li

原创 three.js 06-06 之 TextGeometry 幾何體

    今天我們來看看在 three.js 中,如何快速的創建三維文本效果。在 three.js 中渲染文本非常簡單,你所要做的只是指定想用的字體,以及基本的拉伸屬性(基本上就是 ExtrudeGeometry 上提到的那些屬性,極個別的

原创 three.js 06-05 之從 SVG 拉伸創建物體

    本篇我們來探討一下在 three.js 中如何從 SVG 拉伸一個圖形來創建物體。首先,我們從 https://github.com/asutherland/d3-threeD 獲取一個叫 d3-threeD 的小型庫,它可以將

原创 three.js 09-02 之 選擇對象

    我們在討論相機和動畫之前,先來看看對象的選擇實現,儘管這個跟動畫沒有直接的關係,但瞭解這個實現之後將會是一個很有益的補充。    在給出示例代碼之前,我們先來看一下核心代碼:function onDocumentMouseDown

原创 three.js 06-03 之 ExtrudeGeometry 高級幾何體

    本篇介紹 three.js 中的 ExtrudeGeometry 拉伸幾何體。它是從一個二維圖形創建出一個三維圖形。譬如,我們可以先通過 THREE.Shap 對象,先創建一個二維的圖形,然後通過 ExtrudeGeometry

原创 three.js 06-06 之 Binary Operations 幾何體

    本篇將要介紹的是在 three.js 中如何使用二元操作來自由組合物體。爲此,我們需要引入一個 three.js 的擴展 ThreeBSP.js 庫,你可以從網上找到這個庫,譬如從 http://download.csdn.net

原创 three.js 06-02 之 LatheGeometry 高級幾何體

    本篇介紹 three.js 中的 LatheGeometry 掃描幾何體。它是從一條光滑的曲線開始創建圖形,這條曲線是通過指定一些點(也叫節點)來定義的,而這條曲線通常也被稱作樣條曲線。當這條曲線圍繞一個固定點選擇時,就構成了一

原创 three.js 09-03 之 Tween 動畫

    Tween.js 是一個小型的 JavaScript 庫,可以從 https://github.com/sole/tween.js 下載。這個庫可以用來定義某個屬性在兩個值之間的過渡,自動計算起始值和結束值之間的所有中間值。這個過

原创 three.js 08-03 之 加載和保存對象

    前面介紹過,通過組合及合併等操作,你可以使用 three.js 提供的基本幾何體來創建大型的、複雜的幾何體。但是,如果你想創建更加高級的幾何體,那麼使用 three.js 所提供的編程方式就不是最好、最有效的方式。幸運的是 thr

原创 three.js 07-05 之 Points 多組粒子系統組合應用

    在上一篇的 Points 粒子系統示例中,我們都只是在場景中加入了一組粒子系統。但是,像北方冬天那種大雪紛飛的場景,光用一組粒子系統估計不足以呈現這樣的複雜場景。因此,需要將多組粒子系統組合起來才能應付。     下面我們就來介紹

原创 three.js 08-02 之 網格合併

    上一篇文中,我們介紹到利用 THREE.Group 對象可以很容易操縱和管理大量的網格。但是當網格對象的數量非常多時,性能就會成爲一個瓶頸。實際上在組裏的每個對象還是獨立的,需要對它們分別進行處理和渲染。     在舊版 thre