創建一個有陰影的threejs三維幾何體

import * as THREE from "three"
import { OrbitControls } from 'three/examples/jsm/controls/OrbitControls'const width = window.innerWidth;
const height = window.innerHeight;//創建場景
const scene = new THREE.Scene();
scene.background = new THREE.Color('#65762c'); //創建幾何體
const geometry = new THREE.SphereGeometry(50,50,50)
const material = new THREE.MeshLambertMaterial({color:0x00ffff,
})
const mesh = new THREE.Mesh(geometry,material);
scene.add(mesh)//創建平行光
const dirLight2 = new THREE.DirectionalLight(0xFFFFFF, 1);
dirLight2.position.set(100,100,100);
scene.add(dirLight2);//添加環境光
const ambient = new THREE.AmbientLight(0xffffff, 1)
scene.add(ambient)//光源輔助觀察
// const pointLightHelper = new THREE.DirectionalLightHelper(dirLight2, 2)
// scene.add(pointLightHelper)//AxesHelper 輔助觀察坐標系
// const axesHelper = new THREE.AxesHelper(100);
// scene.add(axesHelper)//相機
const camera = new THREE.PerspectiveCamera(45,width/height,1,1000)
//相機在three.js三維坐標系中的位置,根據需要設置相機位置具體值
camera.position.set(100,200,250);
//相機觀察目標指向three.js坐標系原點,相機的位置
camera.lookAt(0,0,0)//創建渲染器對象
const renderer = new THREE.WebGLRenderer();
//設置three.js渲染區域的尺寸
renderer.setSize(width,height);//three.js執行渲染命令會輸出一個canvas畫布
document.body.appendChild(renderer.domElement);//循環渲染
function render(){renderer.render(scene,camera);requestAnimationFrame(render);
}render();//設置相機軌道控制器
const controls = new OrbitControls(camera, renderer.domElement);//如果OrbitControls改變了相機參數,重新調用渲染器渲染三維場景,監聽鍵盤、鼠標事件
controls.addEventListener('change',function(){renderer.render(scene,camera);  //執行渲染操作// console.log('camera.position',camera.position)
})

請添加圖片描述

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

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

相關文章

LinuxBasicsForHackers筆記 --Python 腳本基礎

添加Python模塊 Python 有一個專門用于安裝和管理 Python 包的包管理器,稱為 pip(Pip Installs Packages)。由于我們在這里使用 Python 3,因此您將需要 Python 3 的 pip 來下載和安裝軟件包。默認情況下應包含 Pip,但…

學習Node.js與Webpack總結

今天學習了模塊化的簡介,其實一個項目是由很多個模塊文件組成的,它們有它們各自的功能和用途來協助這個項目的完成,這樣的模塊組成有很多的好處比如提高代碼的復用性、還可以按需加載、還有獨立的作用域,還需要搞清楚的一點就是No…

如何截取Hive數組中的前N個元素?

文章目錄 1、需求描述2、使用索引3、使用posexplode()4、轉換為字符串操作 1、需求描述 需求:截取任意給定數組中的前N個元素,返回截取后的子數組 假設我們有如下三種類型的Hive數組: select array(1,2,3,4) -- [1,2,3,4] selec…

vue前端訪問Django channels WebSocket失敗

現象 前端報錯:SSH.vue:51 WebSocket connection to ‘ws://127.0.0.1:8000/server/terminal/120.59.88.26/22/1/’ failed: 后端報錯:Not Found: /server/terminal/120.79.83.26/22/1/ 原因 django的版本與channels的版本不匹配(django…

關于個人職業選擇

職業選擇,一直是個老生常談的話題。這并不是一個容易做的決定。 讓我們來看看AI怎么說。 首先是方向性的回答: 然后是一些具體的回答 我個人比較傾向于深耕網絡安全。這是一個很有趣也是一個持續發展著的領域。 不知道關于這個事情你怎么看&#xff0…

在線學習平臺-課程分頁、用戶管理、教師查詢

在線學習平臺------手把手教程👈 用戶管理 添加功能增強 新增屬性 若依里的用戶模塊(SysUser)是沒有課程這一屬性的,要實現我們自己的課程分頁查詢功能 這個位置傳入的實體類SysUser要加上classId,記得加上get、set方法 更改sql語句 ctrl 鼠標左鍵不斷點進去…

DS二叉排序樹之刪除

Description 給出一個數據序列,建立二叉排序樹,并實現刪除功能 對二叉排序樹進行中序遍歷,可以得到有序的數據序列 Input 第一行輸入t,表示有t個數據序列 第二行輸入n,表示首個序列包含n個數據 第三行輸入n個數據…

藍橋杯周賽 第 1 場 強者挑戰賽 6. 小球碰撞【算法賽】(思維題/最長上升子序列LIS)

題目 https://www.lanqiao.cn/problems/9494/learning/?contest_id153 思路來源 Aging代碼 題解 二分時間t&#xff0c;第i個小球對應一個起點pi、終點pit*vi的區間&#xff0c;問題轉化為&#xff0c; 選最多的區間&#xff0c;使得不存在區間包含&#xff08;即li<l…

微信小程序過濾器之計算當前時間差

微信小程序過濾器之計算當前時間差 前言一、wxs簡介二、使用步驟1.定義2.使用 前言 最近遇到了一個需求&#xff0c;將小程序里面的具體時間2023-12-11 09:41:06轉為當前時間差10小時前&#xff0c;這塊可以使用js邏輯函數對數據進行處理&#xff0c;但這里我們采用微信小程序…

Error: Failed to resolve vue/compiler-sfc——vite項目啟動報錯——npm run serve

運行項目時&#xff0c;報錯如下&#xff1a; Error: Failed to resolve vue/compiler-sfc 根據報錯信息的提示&#xff1a;vue的版本必須大于3.2.25&#xff0c;經過查看package.json文件&#xff0c;可以看到vue的版本為3.2.36&#xff0c;是滿足條件的。 因此考慮緩存問題&…

【OPNEGIS】Geoserver原地升級jetty,解決Apache HTTP/2拒絕服務漏洞 (CVE-2023-44487)

Geoserver是我們常用的地圖服務器&#xff0c;在開源系統中的應用比較廣泛。在實際環境中&#xff0c;我們可能會選用官方的二進制安裝包進行部署&#xff0c;這樣只要服務器上有java環境就可以運行&#xff0c;方便在現場進行部署。 1.問題來源 這次由于甲方一月一次的漏洞掃…

Mysql表的數據類型

數據類型 https://www.sjkjc.com/mysql/varchar/ MySQL 中的數據類型包括以下幾個大類&#xff1a; 字符串類型 數字類型 日期和時間類型 二進制類型 地理位置數據類型 JSON 數據類型 MySQL 字符串數據類型 VARCHAR&#xff1a;純文本字符串&#xff0c;字符串長度是可變的…

智能優化算法應用:基于陰陽對算法3D無線傳感器網絡(WSN)覆蓋優化 - 附代碼

智能優化算法應用&#xff1a;基于陰陽對算法3D無線傳感器網絡(WSN)覆蓋優化 - 附代碼 文章目錄 智能優化算法應用&#xff1a;基于陰陽對算法3D無線傳感器網絡(WSN)覆蓋優化 - 附代碼1.無線傳感網絡節點模型2.覆蓋數學模型及分析3.陰陽對算法4.實驗參數設定5.算法結果6.參考文…

云計算、邊緣計算、霧計算

目錄 云計算邊緣計算霧計算 云計算 云計算是基于互聯網的計算模式&#xff0c;允許用戶通過網絡獲取計算資源、存儲資源、數據庫等服務&#xff0c;無需了解和管理底層 云計算是分布式計算的一種&#xff0c;指的是通過網絡“云”將巨大的數據計算處理程序分解成無數個小程序…

Java - Mybatis的緩存機制、集成SpringBoot后緩存相關問題

mybaits提供一級緩存&#xff0c;和二級緩存 一級緩存&#xff08;默認開啟&#xff09; 一級緩存是SqlSession級別的緩存。在操作數據庫時需要構造 sqlSession對象&#xff0c;在對象中有一個(內存區域)數據結構&#xff08;HashMap&#xff09;用于存儲緩存數據。不同的sqlSe…

STM32F407-14.3.1-01 時基單元

時基單元 可編程高級控制定時器的主要模塊是一個 16 位計數器及其相關的自動重載寄存器。計數器可遞增計數、遞減計數或交替進行遞增和遞減計數。計數器的時鐘可通過預分頻器進行分頻。 計數器、自動重載寄存器和預分頻器寄存器可通過軟件進行讀寫。即使在計數器運行時也可執行…

Linux ln命令教程:如何創建符號鏈接(附案例詳解和注意事項)

Linux ln命令介紹 Linux ln命令&#xff08;全稱&#xff1a;link files&#xff09;是一個非常重要的命令&#xff0c;它的功能是為某一個文件在另外一個位置建立一個同步的鏈接。當我們需要在不同的目錄&#xff0c;用到相同的文件時&#xff0c;我們不需要在每一個需要的目…

Python:核心知識點整理大全14-筆記

目錄 ?編輯 7.2.2 讓用戶選擇何時退出 parrot.py 7.2.3 使用標志 7.2.4 使用 break 退出循環 cities.py 7.2.5 在循環中使用 continue counting.py 7.2.6 避免無限循環 counting.py 7.3 使用 while 循環來處理列表和字典 7.3.1 在列表之間移動元素 confirmed_user…

數字圖像處理(實踐篇)二十二 使用opencv進行人臉、眼睛、嘴的檢測

目錄 1 xml文件 2 涉及的函數 3 實踐 使用opencv進行人臉、眼睛、嘴的檢測。 1 xml文件 方法① 下載 地址&#xff1a;https://github.com/opencv/opencv/tree/master/data/haarcascades 點擊haarcascade_frontalface_default.xml文件 對著Raw右鍵&#xff0c;選擇“鏈接…

【JVM從入門到實戰】(二)字節碼文件的組成

一、Java虛擬機的組成 二、字節碼文件的組成 字節碼文件的組成 – 應用場景 字節碼文件的組成部分-Magic魔數 什么是魔數&#xff1f; Java字節碼文件中的魔數 文件是無法通過文件擴展名來確定文件類型的&#xff0c;文件擴展名可以隨意修改&#xff0c;不影響文件的內容。…