章節一、認識three.js與開發環境學習筆記01;

一、如何學習WEB可視化3D技術與課程內容演示;

1、項目案例:

? ? ? ?政府有大量的新基建的項目:如數字孿生、智慧城市、智慧園區、智慧工廠、智慧消防等等都涉及了3d的可視化技術;

2、如何系統的學號WEB 3D可視化技術?

???????three.js是一個讓用戶通過javascript入手進入搭建webgl項目的類庫;

???????學習webgl需要圖形學的知識,而webgl需要通過學習 js 和 glsl 兩種語言;

????????直接使用webgl需要的話,那么勢必是從底層寫起來,那這個時候必須全面的去了解 著色器 的語法,那么自己需要去編寫 頂點著色器 和 片元著色器;

?3、如何開始學習three.js?

????????需要掌握:threejs里面的基本概念:點、線、面、幾何體;
? ? ? ? 需要掌握:材質物體、場景、相機、渲染器、動畫、控制器;

? ? ? ? 需要了解:pbr(pbr是基于物理的光照原理的渲染)、環境貼圖、凹凸貼圖、置換貼圖、放射光、環境貼圖、金屬貼圖、粗糙度貼圖;
? ? ? ? 如何通過這些方式把光照的效果:類如石子的凹凸、門面的凹凸、僅僅通過一個平面也能夠顯示出凹凸不平的效果 以及 折射不同角度的光照效果;

????????如何打造粒子?我們要繪制雨雪、落葉、星河;

????????如何讓我們的網頁 跟我們的物體進行一個互動?如何選中場景中的物體進行交互?如何能夠掌握物理引擎讓物體有真實的物理效果?例如像:重力、反彈、摩擦力等物體這個相互作用,讓它更加的真實?

4、如何系統學習WEBGL?

????????進入webgl的魔力世界:掌握著色技術的語言控制,用gpu的方式來進行渲染;掌握threejs怎么用底層去封裝webgl;
????????如何通過著色器編寫頂點著色器?如何通過著色器編寫片元著色器?
????????了解整個圖像渲染的原理,去繪制比如 動態飄揚的旗幟、衣服、煙霧、烏云、波濤洶涌的大海、水紋等...
????????掌握了著色器,我們就可以寫出各種酷炫的效果:像節日的煙花。
????????繼續深入可以讓整個場景進行后期的加工,例如說:可以打造出像生化危機里面閃爍的怪異的畫面、一個帶雪花的陳舊感的畫面、編寫著色器打造出水底觀看的效果;

二、新增打造開放世界課程項目預覽;

三、本地搭建three.js的官方網站;

1、Github下載three.js的代碼;

? ? ? ?官網:github.com:mrdoob/three.js.git

? ? ? ?下載壓縮包文件:Download ZIP

? ? ? ? 解壓文件后:npm install?

? ? ? ? 啟動項目:npm run dev

四、使用parcel搭建three.js的開發環境;

1、為什么使用parcel?

? ? ? 代碼自動補全;

? ? ? ?寫完代碼在瀏覽器中可以直接看到效果;

? ? ? ?極速配置、快速上手開發;

2、如何搭建parcel的開發環境?

? ? ? ?網址:parceljs.cn

// 01.項目初始化
npm init// 02.安裝bunder
npm install parcel-bundler// 03.配置命令
{"scripts" : {// 打包哪個文件"dev" : "parcel src/index.html",// 項目構建"build" : "parcel build src/index.html"}
}// 04.設置開發環境的依賴
npm install parcel-bundler --save-dev

3、安裝Three.js的依賴

// 安裝threejs的環境包依賴
npm install three --save

五、使用three.js渲染第一個場景和物體;

import * as THREE from 'three';console.log(THREE)// 目標:了解three.js最基本的內容// 一、創建場景
const scene = new THREE.Scene();// 二、創建相機(透視相機)
/*** fov    攝像機是椎體垂直視野角度* aspect 攝像機視椎體寬高比* near   攝像機視椎體近端面* far    攝像機視椎體遠端面*/
const camera = new THREE.PerspectiveCamera(75,window.innerWidth/window.innerHeight,0.1,1000
);// 2.1.設置相機位置
camera.position.set(0,0,10);// 2.2.場景中添加相機
scene.add(camera);// 三、場景中添加物體
// 3.1.創建幾何體對象
const cubeGeometry = new THREE.BoxGeometry(1,1,1);// 3.2.設置幾何體的材質
const cubeMaterial = new THREE.MeshBasicMaterial({color : 0xffff000})// 3.3.根據幾何體的材質創建物體
const cube = new THREE.Mesh(cubeGeometry , cubeMaterial);// 3.4.將幾何體添加到場景當中
scene.add(cube);// 四、初始化渲染器
// 4.1.初始化渲染器
const renderer = new THREE.WebGLRenderer();// 4.2.設置渲染的尺寸和大小,和屏幕的尺寸大小一致
renderer.setSize(window.innerWidth, window.innerHeight);console.log(renderer);// 五、將webgl渲染的canvas內容添加至body
document.body.appendChild(renderer.domElement);// 六、使用渲染器通過相機將場景渲染進來
renderer.render(scene,camera);

六、如何處理運行搭建開發Three環境出現的問題;

七、結合vue開發three.js;

1、用vue搭建THREE的開發環境;

// 01.全局安裝VUE-CLI環境
npm install -g @vue/cli// 02.創建vue項目,選擇vue3版本
vue create threeapp?  Your connection to the default yarn registry seems to be slow.Use https://registry.npmmirror.com for faster installation? YesVue CLI v5.0.8
? Please pick a preset: Manually select features
? Check the features needed for your project: Babel
? Choose a version of Vue.js that you want to start the project with 3.x
? Where do you prefer placing config for Babel, ESLint, etc.? In dedicated config files
? Save this as a preset for future projects? No
? Pick the package manager to use when installing dependencies: Yarn// 03.安裝THREE的依賴
cd /threeapp
yarn add three// 04.啟動環境
yarn serve

2、修改App.vue的文件;

<template><div></div>
</template><script setup>import * as THREE from 'three';console.log(THREE)// 目標:了解three.js最基本的內容// 一、創建場景const scene = new THREE.Scene();// 二、創建相機(透視相機)/*** fov    攝像機是椎體垂直視野角度* aspect 攝像機視椎體寬高比* near   攝像機視椎體近端面* far    攝像機視椎體遠端面*/const camera = new THREE.PerspectiveCamera(75,window.innerWidth/window.innerHeight,0.1,1000);// 2.1.設置相機位置camera.position.set(0,0,10);// 2.2.場景中添加相機scene.add(camera);// 三、場景中添加物體// 3.1.創建幾何體對象const cubeGeometry = new THREE.BoxGeometry(1,1,1);// 3.2.設置幾何體的材質const cubeMaterial = new THREE.MeshBasicMaterial({color : 0xffff000})// 3.3.根據幾何體的材質創建物體const cube = new THREE.Mesh(cubeGeometry , cubeMaterial);// 3.4.將幾何體添加到場景當中scene.add(cube);// 四、初始化渲染器// 4.1.初始化渲染器const renderer = new THREE.WebGLRenderer();// 4.2.設置渲染的尺寸和大小,和屏幕的尺寸大小一致renderer.setSize(window.innerWidth, window.innerHeight);console.log(renderer);// 五、將webgl渲染的canvas內容添加至bodydocument.body.appendChild(renderer.domElement);// 六、使用渲染器通過相機將場景渲染進來renderer.render(scene,camera);</script><style>
* {margin: 0;padding: 0;box-sizing: border-box;
}
canvas {width: 100vw;height: 100vh;postion: fixed;left:0;top:0;
}</style>

注:本文為THREEJS的學習筆記,不涉及商業盈利,如原作者認為有涉及原課程的侵權行為,請聯系我刪文處理!!!?

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/714316.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/714316.shtml
英文地址,請注明出處:http://en.pswp.cn/news/714316.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

網絡安全學習筆記1

1.了解kali及安裝 vmware安裝&#xff0c;用戶名密碼均為kali 2.metasploit是什么 3.metasploit攻擊windows系統 在kali中打來終端 數據msfconsole 進入metasploit的控制終端界面 msf的使用法則&#xff1a; 1.使用模塊 2.配置模塊必選項 3.運行模塊 三步操作、實現對…

邏輯回歸與交叉熵--九五小龐

什么是邏輯回歸 線性回歸預測的是一個連續值&#xff0c;邏輯回歸給出的“是”和“否”的回答 Singmoid sigmoid函數是一個概率分布函數&#xff0c;給定某個輸入&#xff0c;它將輸出為一個概率值 邏輯回歸損失函數 平方差所懲罰的是與損失為同一數量級的情形&#xff0…

8、Redis-Jedis、Lettuce和一個Demo

目錄 一、Jedis 二、Lettuce 三、一個Demo Java集成Redis主要有3個方案&#xff1a;Jedis、Lettuce和Redisson。 其中&#xff0c;Jedis、Lettuce側重于單例Redis&#xff0c;而Redisson側重于分布式服務。 項目資源在文末 一、Jedis 1、創建SpringBoot項目 2、引入依賴 …

電商小程序10分類管理

目錄 1 分類數據源2 搭建功能3 創建變量讀取數據4 綁定數據總結 本篇我們介紹一下電商小程序的分類管理功能的開發&#xff0c;先看我們的原型圖&#xff1a; 在首頁我們是展示了四個分類的內容&#xff0c;采用上邊是圖標&#xff0c;下邊是文字的形式。使用低代碼開發&#…

【系統分析師】-需求工程

一、需求工程 需求工程分為需求開發和需求管理。 需求開發&#xff1a;需求獲取&#xff0c;需求分析&#xff0c;需求定義、需求驗證。 需求管理&#xff1a;變更控制、版本控制、需求跟蹤&#xff0c;需求狀態跟蹤。&#xff08;對需求基線的管理&#xff09; 1.1需求獲取…

MySQL:合并查詢語句

1、查詢表的數據 t_book表數據 SELECT * FROM db_book.t_book; t_booktype表數據 SELECT * FROM db_book.t_booktype; 提醒&#xff1a; 下面的查詢操作的數據來自上圖查詢表的數據 2. 使用 UNION 查詢結果合并&#xff0c;會去掉重復的數據 使用UNION關鍵字是&#xff0c;數…

社區店經營口號大揭秘:如何吸引更多顧客?

社區店的經營口號是吸引顧客的重要工具&#xff0c;一個好的口號能夠在短時間內傳達店鋪的特色和價值&#xff0c;并引起顧客的興趣。 作為一名開鮮奶吧5年的創業者&#xff0c;我將分享一些關于社區店經營口號的干貨&#xff0c;幫助你吸引更多的顧客。 1、突出獨特賣點&…

群控代理IP搭建教程:打造一流的網絡爬蟲

目錄 前言 一、什么是群控代理IP&#xff1f; 二、搭建群控代理IP的步驟 1. 獲取代理IP資源 2. 配置代理IP池 3. 選擇代理IP策略 4. 編寫代理IP設置代碼 5. 異常處理 三、總結 前言 群控代理IP是一種常用于網絡爬蟲的技術&#xff0c;通過使用多個代理IP實現并發請求…

優思學院|3步驟計算出Cpk|學習Minitab

在生產和質量管理中&#xff0c;準確了解和控制產品特性至關重要。一個關鍵的工具是Cpk值&#xff0c;它是衡量生產過程能力的重要指標。假設我們有一個產品特性的規格是5.080.02&#xff0c;通過收集和分析過程數據&#xff0c;我們可以計算出Cpk值&#xff0c;進而了解生產過…

CentOS 定時調度

文章目錄 一、場景說明二、腳本職責三、參數說明四、操作示例五、注意事項 一、場景說明 本自動化腳本旨在為提高研發、測試、運維快速部署應用環境而編寫。 腳本遵循拿來即用的原則快速完成 CentOS 系統各應用環境部署工作。 統一研發、測試、生產環境的部署模式、部署結構、…

Java中靈活使用Mockito

目錄 Java中靈活使用Mockito引言Mockito簡介基本用法實例演示使用場景和案例解決方案結語 Java中靈活使用Mockito 引言 Mockito是Java中常用的mock框架之一&#xff0c;用于進行單元測試時模擬對象的行為。本文將介紹Mockito的基本用法&#xff0c;并探討如何在實際項目中靈活…

AP8P059 PIR 人體感應太陽能 LED 燈控制芯片

概述 AP8P059 是一款集成低壓 LDO、光控、充電控制、過充保護、欠壓保護、PIR感應、延時為一體的人體感應太陽能 LED燈控制芯片&#xff0c;只需要很少的外接元件&#xff0c;適用于鋰電池供電的PIR人體感應LED燈具的應用。外置的一級帶通增益放大器便于客戶調整感應靈敏度&am…

QT MinGW64編譯vlc源碼

編譯環境搭建 參考文章《QT Mingw32/64編譯ffmpeg源碼生成32/64bit庫以及測試》&#xff0c;搭建msys64環境&#xff1b; 運行msys.exe,運行&#xff1a; pacman -S git subversion cvs automake autoconf libtool m4 make gettext pkg-config mingw-w64-i686-lua findutils …

docker配置數據默認存儲路徑graph已過時,新版本中是data-root

錯誤信息 我在修改/etc/docker/daemon.json文件中&#xff0c;添加存儲路徑graph字段。然后sudo systemctl restart docker包如下錯誤&#xff1a;使用journalctl -xeu docker.service錯誤信息&#xff0c;發現不能匹配graph字段。 原因 我的docker版本&#xff1a; 在doc…

mybatisplus整合flowable-ui-modeler報錯

1、問題 Description:file [/Users/xingyuwei/Documents/project/java/springboot_01/target/classes/com/xingyu/mapper/TemplateMapper.class] required a single bean, but 2 were found:- sqlSessionFactory: defined by method sqlSessionFactory in class path resource…

TypeScript08:在TS中使用模塊化

前言&#xff1a;tsconfig.json中的配置 一、前端領域中的模塊化標準 前端領域中的模塊化標準有&#xff1a; ES6、commonjs、amd、umd、system、esnext 二、 TS中如何書寫模塊化語句 TS 中&#xff0c;導入和導出模塊&#xff0c;統一使用 ES6 的模塊化標準。 myModule.ts &a…

Keil新版本安裝編譯器ARMCompiler 5.06

0x00 緣起 我手頭的項目在使用最新版本的編譯器后&#xff0c;燒錄后無法正常運行&#xff0c;故安裝5.06&#xff0c;測試后發現程序運行正常&#xff0c;以下為編譯器的安裝步驟。 0x01 解決方法 1. 下載編譯器安裝文件&#xff0c;可以去ARM官網下載&#xff0c;也可以使用我…

藍橋杯練習系統(算法訓練)ALGO-993 RP大冒險

資源限制 內存限制&#xff1a;64.0MB C/C時間限制&#xff1a;200ms Java時間限制&#xff1a;600ms Python時間限制&#xff1a;1.0s 問題描述 請盡情使用各種各樣的函數來測試你的RP吧~~~ 輸入格式 一個數N表示測點編號。 輸出格式 一個0~9的數。 樣例輸入 0 樣…

【airtest】自動化入門教程(三)Poco操作

目錄 一、準備工作 1、創建一個pthon腳本 2、光標位置 2、選擇Android 3、選擇yes 二、定位元素 三、poco基于設備/屏幕 方式 1、poco.click( (x,y))基于屏幕點擊相對坐標為x&#xff0c;y的位置 2、poco.get_screen_size() 3、poco.swipe(v1,v2)基于屏幕從v1位置滑到…

02.剛性事務

剛性事務 1.DTP模型 X/Open組織介紹 X/OPEN是一個組織&#xff08;現在的open group&#xff09;X/Open國際聯盟有限公司是一個歐洲基金會&#xff0c;它的建立是為了向UNIX環境提供標準。它主要的目標是促進對UNIX語言、接口、網絡和應用的開放式系統協議的制定。它還促進在…