html three.js 引入.stl模型示例

1.新建一個模塊用于放置模型

 <div id="chart_map" style="width:800px;height:500px"></div>

2. 引入代碼根據需求更改

<!-- 在head或body標簽內加入以下鏈接 -->
<script src="https://cdn.jsdelivr.net/npm/three@0.137/build/three.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/three@0.137/examples/js/controls/OrbitControls.js"></script>
<script src="https://cdn.jsdelivr.net/npm/three@0.137/examples/js/loaders/STLLoader.js"></script>
<script>/*** 創建場景對象Scene*/var scene = new THREE.Scene();var loader = new THREE.STLLoader();loader.load("./stl/files/coolingTower.stl", function (geometry) {// var material = new THREE.MeshLambertMaterial({//     color: 0x0000ff,// }); //材質對象Material// var mesh = new THREE.Mesh(geometry, material);// scene.add(mesh);// 修改為MeshStandardMaterial,并設置金屬ness和粗糙度var material = new THREE.MeshStandardMaterial({color: 0x808080, // 基礎顏色,可以調整為其他灰色或金屬色調metalness: 1, // 設置為1表示完全金屬質感roughness: 0.2, // 金屬表面的粗糙度,0為非常光滑,1為非常粗糙,根據需要調整});var mesh = new THREE.Mesh(geometry, material);// 添加這行代碼來旋轉模型,使其頂部朝向Z軸正方向mesh.rotation.x = -Math.PI / 2;mesh.position.y = -50;// mesh.rotation.y = Math.PI / 1; // π/2 弧度等于 90 度// mesh.rotation.x = Math.PI / 2; // π/2 弧度等于 90 度// mesh.rotation.z = Math.PI / 1; // π/2 弧度等于 90 度scene.add(mesh);});/*** 光源設置*/// 添加半球光,為場景提供自然的天光和地面反射光效果,進一步消除陰影區域const hemisphereLight = new THREE.HemisphereLight(0xddeeff, 0x0f0e0d, 1); // 上半部顏色、下半部顏色、強度scene.add(hemisphereLight);// 調整點光源的強度以增加光照const pointLightIntensity = 200;// 添加四個角的點光源,確保模型的每個角落都有光照const cornerPointLight1 = new THREE.PointLight(0xffffff, pointLightIntensity, 200);cornerPointLight1.position.set(-100, 100, -100);scene.add(cornerPointLight1);const cornerPointLight2 = new THREE.PointLight(0xffffff, pointLightIntensity, 200);cornerPointLight2.position.set(100, 100, -100);scene.add(cornerPointLight2);const cornerPointLight3 = new THREE.PointLight(0xffffff, pointLightIntensity, 200);cornerPointLight3.position.set(-100, 100, 100);scene.add(cornerPointLight3);const cornerPointLight4 = new THREE.PointLight(0xffffff, pointLightIntensity, 200);cornerPointLight4.position.set(100, 100, 100);scene.add(cornerPointLight4);// 輔助坐標系  參數250表示坐標系大小,可以根據場景大小去設置var axisHelper = new THREE.AxesHelper(250);scene.add(axisHelper);// console.log(scene)// console.log(scene.children)/*** 相機設置*/const width = document.querySelector("#chart_map").offsetWidthconst height = document.querySelector("#chart_map").offsetHeight;var k = width / height; //窗口寬高比var s = 100; //三維場景顯示范圍控制系數,系數越大,顯示的范圍越大//創建相機對象var camera = new THREE.OrthographicCamera(-s * k, s * k, s, -s, 1, 1000);camera.position.set(200, 100, 300); //設置相機位置camera.lookAt(scene.position); //設置相機方向(指向的場景對象)/*** 創建渲染器對象*/var renderer = new THREE.WebGLRenderer();renderer = new THREE.WebGLRenderer({ alpha: true }); // 啟用透明 // renderer.setClearColor(0x00000000, 0); // 透明背景renderer.setSize(width, height); //設置渲染區域尺寸// renderer.setClearColor(0xb9d3ff, 1); //設置背景顏色// document.body.appendChild(renderer.domElement); //body元素中插入canvas對象document.querySelector("#chart_map").appendChild(renderer.domElement);// document.body.appendChild(renderer.domElement); //body元素中插入canvas對象renderer.shadowMap.enabled = true;//執行渲染操作   指定場景、相機作為參數// renderer.render(scene, camera);function render() {// requestAnimationFrame(render);// controls.update(); // 必須在render調用中更新controls// renderer.render(scene, camera);renderer.render(scene, camera); //執行渲染操作// mesh.rotateY(0.01);//每次繞y軸旋轉0.01弧度requestAnimationFrame(render); //請求再次執行渲染函數render}render();// var controls = new THREE.OrbitControls(camera, renderer.domElement); //創建控件對象var controls = new THREE.OrbitControls(camera, renderer.domElement, {enableDamping: true, // 是否開啟阻尼效果dampingFactor: 0.25, // 阻尼(慢鏡頭)因子screenSpacePanning: false, // 是否開啟屏幕空間平移rotateSpeed: 0.5, // 旋轉速度zoomSpeed: 0.5, // 縮放速度minDistance: 100, // 最小距離maxDistance: 500, // 最大距離maxPolarAngle: Math.PI / 2 // 限制仰角});
</script>

?3.提供一個模型用于學習參考coolingTower.stl

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

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

相關文章

算法題-字符串排序

題目描述 給定n個字符串&#xff0c;請對n個字符串按照字典序排列。 輸入描述: 輸入第一行為一個正整數n(1≤n≤1000),下面n行為n個字符串(字符串長度≤100),字符串中只含有大小寫字母。 輸出描述: 數據輸出n行&#xff0c;輸出結果為按照字典序排列的字符串。 輸入 #輸…

2.7HDR與LDR

一、基本概念 1.基本概念 動態范圍&#xff08;Dynamic Range&#xff09; 最高亮度 / 最低亮度 HDR High Dynamic RangeLDR Low Dynamic Range HDR與LDR和Tonemapping的對應關系&#xff1a; 我們常用的各種顯示器屏幕&#xff0c;由于不同的廠家不同的工藝導致它們的…

HALCON-從入門到入門-軟件界面介紹

1.廢話 從halcon12到halcon23&#xff0c;開發的IDE界面大差不差&#xff0c;簡單說下界面上不同功能按鍵的分布&#xff0c;以及一些快捷鍵啥的&#xff0c;要是還有我沒有總結到的&#xff0c;又比較好用的&#xff0c;歡迎大家補充一下。 1.菜單欄 從上看到下&#xff0c;…

如何從0到設計一個CRM系統

什么是CRM 設計開始之前&#xff0c;先來了解一下什么是CRM。CRM&#xff08;Customer Relationship Management&#xff09;是指通過建立和維護與客戶的良好關系&#xff0c;達到滿足客戶需求、提高客戶滿意度、增加業務收入的一種管理方法和策略。CRM涉及到跟蹤和管理客戶的所…

python深度學習入門-從零構建CNN和RNN

文章目錄 第1章 基本概念1.1. 導數1.2. 鏈式法則1.3. 多輸入函數的導數1.4. 多輸入向量函數的導數1.5. 向量函數及其導數&#xff1a; 再進一步1.6. 包含兩個二維矩陣數據的計算圖 第2章 基本原理2.1. 監督學習概述2.2. 監督學習模型2.3. 線性回歸2.3.1. 線性回歸&#xff1a; …

[激光原理與應用-94]:電控 - 低噪聲運放的原理

目錄 一、什么是低噪聲運放 1.1 什么是低噪聲水平 1.2 什么是高增益 在電子工程中的應用 在通信領域的應用 在音頻和視頻處理中的應用 注意事項 1.3 什么是寬帶寬 1.4 什么是低偏置電流 重要性 特點 解決方法 應用 二、低噪聲運放的原理圖 1. 基本構成 2. 設計…

HTML5新元素探索:重塑網頁結構與功能的革新

隨著互聯網技術的飛速發展&#xff0c;HTML5作為新一代超文本標記語言標準&#xff0c;不僅增強了對多媒體內容的支持&#xff0c;還引入了一系列新元素&#xff0c;旨在使網頁結構更加語義化、可訪問性更強。本文將深入探討幾個核心的新元素&#xff0c;通過代碼示例展示它們如…

22data 腳本語言基礎——Python

橫線為沒講到的。 1. 基礎語法 變量&#xff1a;變量的聲明和使用。 數據類型&#xff1a;整數&#xff08;int&#xff09;、浮點數&#xff08;float&#xff09;、字符串&#xff08;str&#xff09;、布爾值&#xff08;bool&#xff09;等。 運算符&#xff1a;算術運算符…

第五維度【百度之星】/二分

第五維度 二分 思路&#xff1a;看到題目是盡可能晚的情況下最早就應該想到貪心。 #include<bits/stdc.h> using namespace std; typedef long long ll; ll a[100005],b[100005]; ll n,m; bool check(ll t) {ll res0,big0;for(ll i0;i<n;i) {if(a[i]>t) continue…

JMeter工具介紹

Jmeter功能概要 JDK常用文件目錄介紹 Bin目錄&#xff1a;存放可執行文件和配置文件 Docs目錄&#xff1a;是Jmeter的API文檔&#xff0c;用于開發擴展組件 printable_docs目錄&#xff1a;用戶幫助手冊 lib目錄&#xff1a;存放JMeter依賴的jar包和用戶擴展所依賴的Jar包 修…

HALCON-從入門到入門-讀取圖片保存圖片

1.廢話 視覺算法庫的第一步。 讀取圖片&#xff1a; 看你是從哪里讀取&#xff0c;從相機讀取還是從本地硬盤中讀取。 保存圖片&#xff1a;就只有保存到本地了。 上面的截圖顯示我讀取了一張圖片 從相機中讀取另開一篇來說&#xff0c;先說從本地磁盤讀取哈。 怎么讀取的…

創建maven 項目

一、groupId, artifactId When creating a Maven project in IntelliJ IDEA, "groupId" and "artifactId" are two essential elements of the projects metadata. groupId: This typically identifies your project uniquely across all projects. For e…

C語言程序設計第二講:順序程序設計

一、數據類型 1. 基本數據類型 C語言中提供了一些基本數據類型&#xff0c;用于表示各種不同類型的數據&#xff1a; 整數類型&#xff1a; int&#xff1a;表示整數&#xff0c;通常占用4個字節。short int&#xff1a;表示短整數&#xff0c;通常占用2個字節。long int&am…

Pycharm 的使用

使用文檔&#xff1a; Getting started | PyCharm DocumentationPyCharm 中文指南 — PyCharm 中文指南(Win版) 2.0 documentation 在Ubuntu中安裝并配置Pycharm教程&#xff08;安裝 Pycharm&#xff09;Ubuntu安裝pycharm及快速創建pycharm的快捷方式&#xff0c;便于使用&am…

數據結構復習指導之交換排序(冒泡排序,快速排序)

目錄 交換排序 復習提示 1.冒泡排序 1.1基本思想 1.2算法代碼 1.3性能分析 2.快速排序 2.1基本思想 2.2算法代碼 2.3性能分析 交換排序 復習提示 所謂交換&#xff0c;是指根據序列中兩個元素關鍵字的比較結果來對換這兩個記錄在序列中的位置。 基于交換的排序算法很…

鏈表逆序用哨兵位頭節點

在C語言中實現鏈表的逆序&#xff0c;使用哨兵頭節點是一種常見的做法。哨兵頭節點可以簡化代碼邏輯&#xff0c;特別是當鏈表為空時&#xff0c;可以避免空指針異常。下面是一個使用哨兵頭節點逆序單鏈表的C語言實現 示例&#xff1a; #include <stdio.h> #include &l…

富格林:應用正規技巧阻撓被騙

富格林悉知&#xff0c;隨著如今入市現貨黃金的朋友愈來愈多&#xff0c;不少投資者也慢慢開始重視起提高自身的正規投資技巧&#xff0c;希望能阻撓被騙更高效地在市場上獲利。雖然目前黃金市場存在一定的受害風險&#xff0c;但只要投資者嚴格按照正規的交易規則來做單&#…

python解決flask啟動的同時啟動定時任務

業務場景描述&#xff1a;在常規的開發中&#xff0c;我們開發接口服務&#xff0c;一般會將數據放在數據庫、文件等第三方文件&#xff0c;啟動服務后&#xff0c;服務到后臺數據庫中加載數據&#xff0c;這樣做的好處當然是開發會更加便利以及數據的可復用性較高&#xff0c;…

深度學習-03-函數的連續調用

深度學習-03-函數的連續調用 本文是《深度學習入門2-自製框架》 的學習筆記&#xff0c;記錄自己學習心得&#xff0c;以及對重點知識的理解。如果內容對你有幫助&#xff0c;請支持正版&#xff0c;去購買正版書籍&#xff0c;支持正版書籍不僅是尊重作者的辛勤勞動&#xff0…

LLaMA-Factory推理實踐

運行成功的記錄 平臺&#xff1a;帶有GPU的服務器 運行的命令 git clone https://github.com/hiyouga/LLaMA-Factory.git cd LLaMA-Factory/ conda create -n py310 python3.10 conda activate py310由于服務器不能直接從huggingface上下載Qwen1.5-0.5B&#xff0c;但本地可…