国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

Three Js實現(xiàn)顏色自定義變換

這篇具有很好參考價值的文章主要介紹了Three Js實現(xiàn)顏色自定義變換。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

Three js的官方文檔教程中給予了很多的Geomerty來構造不同類別的三維多邊形,例如立方體BoxGeometry、圓柱體CylinderGeometry、球體SphereGeometry等Three.js幾何體類都是基于基類BufferGeometry二次封裝。Geometry對原生WebGL中的頂點位置position、頂點法向量normal、頂點顏色color、頂點紋理坐標uv、頂點索引index等頂點數(shù)據(jù)進行了封裝,關于Geometry頂點更多介紹可以在學習的過程中通過官方文檔或者b站的視頻來練習。

但是如果第一次接觸到頂點的概念,沒有原生WebGL基礎,建議學習下原生WebGL教程,這樣的話,可以更好的理解幾何體頂點的概念。這次分析構成模型對象的重要元素之一:Geometry(幾何體)。本文分三部分介紹Geometry的主要性質。

  1. Geometry的屬性: 基礎屬性與動畫屬性

基礎屬性

  • 頂點(vertices): 核心屬性,表示幾何體的頂點位置,在構造面及計算法線等時使用

  • 顏色(colors): 用于著色時的顏色計算

  • 面(faces): 由不同頂點組成的面,包含頂點索引、面法線、面頂點法線等數(shù)據(jù),一般為三角面(包含三個點的索引)

  • Geometry的方法: 基礎變換、Mesh與頂點合并、點面法線、包圍盒/球計算

  • BufferGeometry 與 DirectGeometry(Todo)

動畫屬性

Three中可以通過兩種方式實現(xiàn)動畫:

  • 變形動畫(morph animation): 每一幀的狀態(tài)由指定的頂點數(shù)組決定,在動畫中應用指定頂點位置數(shù)組插值后的值(常用)

  • 骨骼蒙皮動畫(bones skin animation): 每一幀的狀態(tài)中Mesh的頂點位置由指定的不同骨骼及它們的權重決定

  1. Geometry的其他屬性

vertices頂點位置屬性(Geometry自定義一個幾何體)

閱讀Three Js文檔下的立方體BoxGeometry、球體SphereGeometry、圓柱體CylinderGeometry等three.js幾何體類的源碼,發(fā)現(xiàn)這些幾何體的源碼都是生成各類幾何體的頂點的相關算法。

一個頂點的位置xyz坐標,可以使用Three.js的一個三維向量Vector3來表示,Three.js幾何體對。Geometry的屬性.vertices表示頂點位置位置坐標的集合。

var geo = new THREE.Geometry();
//位置坐標
var point = new THREE.Vector3(18, 20, 4);

colors頂點顏色屬性

通過Three.js幾何體對象Geometry的屬性color來設置頂點的顏色,=顏色值可以通過Color對象來定義。一個頂點的顏色數(shù)據(jù)用一個Color對象來表示,然后作為幾何體.colors屬性值數(shù)組的元素。當然對于點模型Points和線模型Line幾何體的頂點顏色屬性.colors中頂點數(shù)據(jù)才會起作用,如果是網(wǎng)格模型Mesh,顏色需要通過三角面對象Face3來定義。

const color = new THREE.Color(1, 1, 1);
const material = new THREE.MeshBasicMaterial({color: 0xffff00})
  1. Geometry的主要類別

立方緩沖幾何體(BoxGeometry)

BoxGeometry是四邊形的原始幾何類,它通常使用構造函數(shù)所提供的width、height、depth參數(shù)來創(chuàng)建立方體或者不規(guī)則四邊形。

代碼示例:

代碼示例
const geometry = new THREE.BoxGeometry( 1, 1, 1 );
const material = new THREE.MeshBasicMaterial( {color: 0x00ff00} );
const cube = new THREE.Mesh( geometry, material );
scene.add( cube );

圓形緩沖幾何體(CircleGeometry)

CircleGeometry是歐式幾何的一個簡單形狀,它由圍繞著一個中心點的三角分段的數(shù)量所構造,由給定的半徑來延展。 同時它也可以用于創(chuàng)建規(guī)則多邊形,其分段數(shù)量取決于該規(guī)則多邊形的邊數(shù)。

const geometry = new THREE.CircleGeometry( 5, 32 );
const material = new THREE.MeshBasicMaterial( { color: 0xffff00 } );
const circle = new THREE.Mesh( geometry, material );
scene.add( circle );

圓錐緩沖幾何體(ConeGeometry)

一個用于生成圓錐幾何體的類。

const geometry = new THREE.CircleGeometry( 5, 32 );
const material = new THREE.MeshBasicMaterial( { color: 0xffff00 } );
const circle = new THREE.Mesh( geometry, material );
scene.add( circle );

運行功能截屏展示

Three Js實現(xiàn)顏色自定義變換

4. 總結

以上就是Three js內(nèi)置的一些三維多邊體的主要構造方法,具體的可以參考官方網(wǎng)站的document手冊(https://threejs.org/docs/?q=geo#api/zh/geometries/CircleGeometry)。會有詳解的解釋和方法來上手不同的物體,同時應該巧妙地運用three js的其他對象和屬性來構造豐富多彩的顏色和炫酷的特效。例如我靈活的使用了for循環(huán)和隨機的random函數(shù)的方法來構造出來的三角形多種多樣,例如下圖所示的這樣,感覺很有意思。當然本人我也是剛開始學習前端的三維gis知識,在很多方面還有很多不足之處,還望各位大佬不吝賜教!!

本文參考的主要大佬博客鏈接有:

http://www.yanhuangxueyuan.com/doc/Three.js/Geometry.html

https://yrq110.me/post/front-end/deep-in-threejs-core-objects-ii-geometry/文章來源地址http://www.zghlxwxcb.cn/news/detail-499428.html

Three Js實現(xiàn)顏色自定義變換

到了這里,關于Three Js實現(xiàn)顏色自定義變換的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。如若轉載,請注明出處: 如若內(nèi)容造成侵權/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領支付寶紅包贊助服務器費用

相關文章

  • WebGL+Three.js入門與實戰(zhàn)——給畫布換顏色、繪制一個點、三維坐標系

    WebGL+Three.js入門與實戰(zhàn)——給畫布換顏色、繪制一個點、三維坐標系

    個人簡介 ?? 個人主頁: 前端雜貨鋪 ???♂? 學習方向: 主攻前端方向,正逐漸往全干發(fā)展 ?? 個人狀態(tài): 研發(fā)工程師,現(xiàn)效力于中國工業(yè)軟件事業(yè) ?? 人生格言: 積跬步至千里,積小流成江海 ?? 推薦學習:??前端面試寶典 ??Vue2 ??Vue3 ??Vue2/3項目實戰(zhàn) ??Node.js??

    2024年02月04日
    瀏覽(94)
  • Three.js教程:Face3對象定義Geometry的三角形面

    Three.js教程:Face3對象定義Geometry的三角形面

    推薦:將 NSDT場景編輯器 加入你的3D工具鏈 其他系列工具: NSDT簡石數(shù)字孿生 Face3 對象定義 Geometry 的三角形面 幾何體Geometry的三角面屬性 geometry.faces 和緩沖類型幾何體BufferGeometry頂點索引屬性 BufferGeometry.index 類似都是頂點位置數(shù)據(jù)的索引值,用來組織網(wǎng)格模型三角形的繪制。

    2023年04月26日
    瀏覽(17)
  • Flink|《Flink 官方文檔 - DataStream API - 用戶自定義 Functions》學習筆記 + 源碼分析

    學習文檔:Flink 官方文檔 - DataStream API - 用戶自定義 Functions 學習筆記如下: 用戶可以通過實現(xiàn)接口來完成自定義 Functions。 實現(xiàn)接口并使用的樣例: 使用匿名類實現(xiàn)的樣例: 使用 Lambda 表達式實現(xiàn)(Java 8)樣例: 所有的 Flink 函數(shù)類都有其 Rich 版本,在 Rick function 中,可以獲

    2024年01月18日
    瀏覽(54)
  • 前端常用的一些插件、UI框架、js庫,樣式庫以及官方文檔。【持續(xù)更新】

    前端常用的一些插件、UI框架、js庫,樣式庫以及官方文檔?!境掷m(xù)更新】

    1.1 文檔地址 API文檔 1.2 安裝教程 1.下載安裝 2.導入 2.1 文檔地址 API文檔 2.2 安裝教程 1.下載安裝 2.導入 3.1 文檔地址 API文檔 3.2 安裝教程 1.下載安裝 2.導入 3.安裝遇到的問題 1)描述 ① 控制臺報錯 ② 終端報錯 輸出的內(nèi)容都是 \\\"export xxx was not found in \\\'vue\\\' 2)解決 ① 先卸載 ya

    2024年02月03日
    瀏覽(56)
  • 基于Leaflet.js和Turf.js的等值線區(qū)間自定義及顏色自適應實踐

    基于Leaflet.js和Turf.js的等值線區(qū)間自定義及顏色自適應實踐

    目錄 前言 一、Turf.js等值線相關制作 1、生成方法 2、主要參數(shù) 二、實際案例開發(fā) 1、新建展示頁面 2、等值線生成 ?3、基于Leaflet的再優(yōu)化 總結 ????????在氣象方面的GIS應用當中,會根據(jù)實際的工作需要建立不同的監(jiān)測站點。氣象監(jiān)測站的主要功能包括:(1)天氣預報和

    2024年04月11日
    瀏覽(43)
  • THREE.JS實現(xiàn)個人簡歷網(wǎng)站

    THREE.JS實現(xiàn)個人簡歷網(wǎng)站

    最近,在github上面找到了一個不錯的技術介紹網(wǎng)站,主要使用 html+css+js 原生三件套寫的。我在此基礎之上利用three.js加了一點3D元素在里面,讓這個網(wǎng)站看起來更炫酷。 改的時候,感覺原生還是比不上框架來的方便,后續(xù)有時間我會抽離一個 vue組件 的版本。 在線訪問 :個人

    2024年02月01日
    瀏覽(19)
  • Three.js--》實現(xiàn)3d小島模型搭建

    Three.js--》實現(xiàn)3d小島模型搭建

    目錄 項目搭建 初始化three.js基礎代碼 設置環(huán)境背景 設置水面樣式 添加天空小島 今天簡單實現(xiàn)一個three.js的小Demo,加強自己對three知識的掌握與學習,只有在項目中才能靈活將所學知識運用起來,話不多說直接開始。 項目搭建 本案例還是借助框架書寫three項目,借用vite構建

    2024年02月05日
    瀏覽(430)
  • Three.js--》實現(xiàn)3d踢球模型展示

    Three.js--》實現(xiàn)3d踢球模型展示

    目錄 項目搭建 初始化three.js基礎代碼 設置環(huán)境紋理加載模型 使用Cannon-es實現(xiàn)物理世界 今天簡單實現(xiàn)一個three.js的小Demo,加強自己對three知識的掌握與學習,只有在項目中才能靈活將所學知識運用起來,話不多說直接開始。 項目搭建 本案例還是借助框架書寫three項目,借用

    2024年02月11日
    瀏覽(100)
  • Three.js--》實現(xiàn)3d字體模型展示

    Three.js--》實現(xiàn)3d字體模型展示

    目錄 項目搭建 初始化three.js基礎代碼 設置環(huán)境紋理 加載字體模型 今天簡單實現(xiàn)一個three.js的小Demo,加強自己對three知識的掌握與學習,只有在項目中才能靈活將所學知識運用起來,話不多說直接開始。 項目搭建 本案例還是借助框架書寫three項目,借用vite構建工具搭建vue項

    2024年02月07日
    瀏覽(93)
  • three.js實現(xiàn)點擊事件(vue)

    three.js實現(xiàn)點擊事件(vue)

    1.加載模型(通過點擊模型觸發(fā)事件) 2.通過射線獲取到事件源 (new THREE.Raycaster()和new THREE.Vector2()) 3.通過點擊到該模型使用名字匹配 clickedObject.name==“xx” addEventListener監(jiān)聽事件觸發(fā) 創(chuàng)建 Raycaster和Vector2 計算鼠標或觸摸點的位置 (這里的event是通過事件監(jiān)聽獲?。?更新射線

    2024年02月16日
    瀏覽(23)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領取紅包,優(yōu)惠每天領

二維碼1

領取紅包

二維碼2

領紅包