[three.js] 解決貼圖無法重複的問題 Solving with Texture RepeatWrapping Fail Issue

有些东西,你想找的时侯,怎么也找不到,

而有些东西,不经意间,随处可见;

本以为这是生活中常见的事情,

然而在浩瀚的互联大海中,也是如此。

平时的积累是为了一时之需,

几分钟的投入,

积累起来,

也会成为汪洋大海,

载起一帆小舟,

不至搁浅。

平时注一入滴水,

需时拥有太平洋,

广告词很好,

然而它真正的意义又有几人能真正领悟呢!

附一个不错的 threejs 开源链接:

https://github.com/rmx/threejs-collada

[three.js] 解決貼圖無法重複的問題 Solving with Texture RepeatWrapping Fail Issue

今天開發three.js專案的時候遇到了一個該死的問題,就是模型上的貼圖一直無法如願的作Repeating,不管我怎麼改,不管我怎麼貼,就是無法重複貼圖。

(正常的重複貼圖應該要是這樣)

(但結果一直是這樣,Mesh的兩端一直無法重複做貼圖)

所以我就拼命地對Texture改參數、查Document,總共耗了約4個多小時還是徒勞無功之後,我才認命地開始Google相關Issue。而這個Issue也真不好找,用了好多種關鍵字才找到最後的答案。

以下是相同Issue:

https://github.com/rmx/threejs-collada/issues/16

最後是three.js中的共同作者在文中回答:

About the texture repeat problem: WebGL only supports the repeat wrapping mode for power-of-two textures. Your ground texture is 401×401. You’ll need to resize it to 256×256 or 512×512 to get the desired effect. Three.js silently overrides the wrapping mode to clamp to edge if the texture is not power-of-two.

重重地往我臉上揍了一拳,才讓我想起當年在寫OpenGL ES的時候也遇過這個問題。也就是說,在這種輕量級的3D Rendering當中,WebGL為了讓圖形的處理可以保持在一定的效能,而無法支援NPOT Texture (Non-Power-of-Two),也就是貼圖的單邊解析度,必須是二的次方才行,比如 (64×64), (256×256) 或 (512×256), (32×64)。

While OpenGL 2.0 and later for the desktop offer full support for non-power-of-two (NPOT) textures, OpenGL ES 2.0 and WebGL have only limited NPOT support.

原因是為什麼呢?依照官方的文件,應是Mipmap Generation以及Shader Execution的關係。

而官方也提出了相對應的方法:

However, if your application requires the REPEAT wrap mode for correctness, you can easily resize the image to the next largest power of two dimensions using DOM APIs. Here is an example of how to do this. image is an HTML image object that has been fully loaded; its onload handler has already been called.

也就是你可以用API將圖形調整為最接近的二的次方數,所以現在我們就可以漂亮地將該死的重複貼圖貼在我們該死的模型上啦~!

[three.js] 解決貼圖無法重複的問題 Solving with Texture RepeatWrapping Fail Issue

时间: 2024-08-05 14:24:14

[three.js] 解決貼圖無法重複的問題 Solving with Texture RepeatWrapping Fail Issue的相关文章

修正 Memo 設定為 ReadOnly 後, 無法有複製的功能

问题:当 Memo 設定為 ReadOnly = True 後, 选取一段文字后,無法有複製的功能. 适用:XE6 Android 系统(目前 iOS 还找不到方法) 修正方法: 请将源码 FMX.Platform.Android.pas 复制到自己的工程目录里,再进行修改. 找到 TWindowManager.ShowContextMenu 函数,删除一行,如下: procedure TWindowManager.ShowContextMenu(const ItemsToShow: TCont

JAVA演算法---約瑟夫問題

1 public class Josephus { 2 public static int[] arrayOfJosephus( int number, int per) { 3 4 int[] man = new int[number]; 5 6 for(int count = 1, i = 0, pos = -1; 7 count <= number; count++) { 8 do { 9 pos = (pos+1) % number; // 環狀處理 10 if(man[pos] ==

何解決 LinqToExcel 發生「無法載入檔案或組件」問題何解決 LinqToExcel 發生「無法載入檔案或組件」問題

在自己的主機上透過 Visual Studio 2013 與 IISExpress 開發與測試都還正常,但只要部署到測試機或正式機,就是沒辦法順利執行,卡關許久之後找我協助.我發現錯誤訊息確實很「一般」,訊息是:「 無法載入檔案或組件 'LinqToExcel' 或其相依性的其中之一. 試圖載入格式錯誤的程式. 」或是英文版的「 Could not load file or assembly 'LinqToExcel' or one of its dependencies. An attempt

ubuntu 16.04 無法進入tty1-6(未解決)

無意中被貓踩了鍵盤 進入tty4終端     網上查詢後 1 ctl+alt+f7 無效   2.startx  回到圖形界面 但是上面左邊的欄都沒有了, 只有桌面的文件 鼠標箭頭變成了叉叉   只能reboot重啓    3.sudo lightdm restart 可行 重啓後嘗試  ctl+alt+1-7  發現問題:  1.只能調出來tty4 和tty5 2.f按鍵與出來的tty不符合  比如按ctl+alt+f3 出來的是tty4 3.只能切換tty4和tty5  其餘tty都沒有 且

DevExpress的GridControl控件更新數據問題解決辦法

開發WPF程序時,使用Devexpress的GridControl控件用ItemSource綁定數據,在頁面進行編輯時,當屬性繼承INotifyPropertyChanged接口時會同步更新後臺數據.今天在開發時遇到一種情況,當通過GridControl中Row上Button[Command]改變行內數據,也就是binding的Detail數據已改變,這時NotifyPropertyChanged有觸發,但改變的行數據不會同步更新到UI上,目前測試有兩種方式進行解決. 1.直接new 一個新的行

在 React Native 中使用 moment.js 無法載入語系檔案

moment.js 是很常見的日期時間 library,友善的 API 與極佳的執行效率是它的兩大賣點.例如 (new Date()).getFullYear(),如果使用 moment.js 我可以只寫 moment().get('year'),可讀性增強許多. 問題 React Native 0.29.x 預設使用 ES6,並支援 import 語法.問題出在如果遵照官方網站的說明去載入語系檔,會發生找不到模組 (cannot find module) 的錯誤.推測可能是 moment.js

PHP header() 下載服務器文件亂碼,損壞解決辦法

header("Content-Type: application/octet-stream"); header('Content-Transfer-Encoding: binary'); header("Content-Disposition: attachment; filename=\"".$file_name."\""); readfile("lib/uploads/doc/".$file_name

CKEditor4 自動清除內容標籤問題的解決方法

在CKEditor中我們經由配置檔Config.js,可以依照自己的需求去自定編輯器的工具,如下圖: 而在CKEditor中CKEDITOR.editor.filter會過濾掉一些沒開放功能的內容,舉例來說:上面這編輯器並沒有開放iframe這功能,但倘若我想要貼上youtube分享的嵌入連結,就是由方式嵌入的,youtube嵌入的Code如下:&lt;iframe width=&quot;560&quot; height=&quot;315&quot; src=&

解決數據質量問題是大數據應用的關鍵

研究稱,整個人類文明所獲得的全部數據量,有90%是最近兩年內產生的.隨著移動互聯大潮的席捲,預計通過網路產生的數據量還將呈幾何級增長.龐大的數據資源蘊藏著無限的寶藏,過去的一年無論是企業.政府還是媒體,都在談論大數據.有人說大數據是黃金.是競爭力,然而在這一切談論的背後卻鮮有人關注數據質量這個最根本的問題.普元數據產品總監王軒認為,大數據處理的關鍵就是解決數據質量問題,規避數據錯誤.保障數據質量才能真正讓企業從大數據應用中獲得利益.保障數據質量成為大數據發揮價值的先決條件「企業做數據集成.數據處