Three.js-實現加載圖片并旋轉

1.實現效果

2. 實現步驟

2.1創建場景

const scene = new THREE.Scene();

2.2添加相機

說明:

  • fov(視場角):視場角決定了相機的視野范圍,即相機可以看到的角度范圍。較大的視場角表示更廣闊的視野,但可能會導致失真。一般建議設置在 45° 到 90° 之間。
  • aspect(縱橫比):縱橫比表示了渲染區域的寬度和高度之比。通常設置為渲染區域的寬度除以高度,以保持圖像不變形。
  • near(近裁剪面):近裁剪面決定了相機能夠看到的最近的物體的距離。通常設置為一個正數,表示相機距離近裁剪面的距離。
  • far(遠裁剪面):遠裁剪面決定了相機能夠看到的最遠的物體的距離。通常設置為一個正數,表示相機距離遠裁剪面的距離。
const camera = new THREE.PerspectiveCamera(75, window.innerWidth / window.innerHeight, 0.1, 1000);

2.3添加網格

說明:創建幾何圖形和圖形的材質(幾何圖形必須要材質)。下面創建了矩陣圖形。

const textureMaterial = new THREE.MeshBasicMaterial({map: texture});
const geometry = new THREE.PlaneGeometry(1, 1);
mesh = new THREE.Mesh(geometry, textureMaterial);

2.4渲染動畫

const renderer = new THREE.WebGLRenderer({antialias: false});
renderer.setSize(width, height);

2.5放入Dom結構

  document.querySelector("#renderBox").appendChild(renderer.domElement);

3.源代碼

<template><div id="renderBox"></div>
</template><script setup>
import * as THREE from 'three';
import {onMounted} from "vue";
// 瀏覽器可操作的寬度,高度
const width = window.innerWidth, height = window.innerHeight;const camera = new THREE.PerspectiveCamera(75, window.innerWidth / window.innerHeight, 0.1, 1000);camera.position.z = 1;
const scene = new THREE.Scene();
const geometry = new THREE.PlaneGeometry(1, 1);
let mesh;
const textureLoader = new THREE.TextureLoader().load("/data/map/scene-bg2.png",function (texture) {// 紋理加載完成后創建材質,map:texture實際就是貼在上面的const textureMaterial = new THREE.MeshBasicMaterial({map: texture});// 創建一個網格對象mesh = new THREE.Mesh(geometry, textureMaterial);// 將網格對象添加到場景中scene.add(mesh);}
);
const renderer = new THREE.WebGLRenderer({antialias: false});
renderer.setSize(width, height);
renderer.setAnimationLoop(animation);function animation(time) {if (mesh) {// 每一幀增加網格對象的旋轉角度,實現 360 度旋轉效果mesh.rotateOnAxis(new THREE.Vector3(0, 0, 1), 0.02);}// 渲染圖形renderer.render(scene, camera);}const init = () => {document.querySelector("#renderBox").appendChild(renderer.domElement);
}onMounted(() => {init()
})
</script><style></style>

4.素材圖片

?

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

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

相關文章

第 10 章 nodelet(自學二刷筆記)

重要參考&#xff1a; 課程鏈接:https://www.bilibili.com/video/BV1Ci4y1L7ZZ 講義鏈接:Introduction Autolabor-ROS機器人入門課程《ROS理論與實踐》零基礎教程 10.4 nodelet ROS通信是基于Node(節點)的&#xff0c;Node使用方便、易于擴展&#xff0c;可以滿足ROS中大多…

SBOM是如何幫助醫療器械制造商提高產品透明度的?

SBOM&#xff08;軟件物料清單&#xff09;通過以下方式幫助醫療器械制造商提高產品透明度&#xff1a; 1. 詳細記錄軟件組成 SBOM詳細列出了醫療器械所使用的所有軟件組件、版本、作者、許可證信息等。這使得制造商能夠清晰地了解產品的軟件組成&#xff0c;包括每個組件的來…

基于springboot實現民族婚紗預定系統項目【項目源碼+論文說明】

基于springboot實現民族婚紗預定系統的設計演示 摘要 現代經濟快節奏發展以及不斷完善升級的信息化技術&#xff0c;讓傳統數據信息的管理升級為軟件存儲&#xff0c;歸納&#xff0c;集中處理數據信息的管理方式。本民族婚紗預定系統就是在這樣的大環境下誕生&#xff0c;其可…

【Emgu CV教程】10.15、FillPoly()不規則形狀填充顏色

文章目錄 一、概念二、填充不規則圖形1.原始素材2.代碼3.運行結果 二、最大輪廓填充顏色1.原始素材2.代碼3.運行結果 一、概念 圖像的連通域是指圖像中具有相同像素值并且位置相鄰的像素組成的區域&#xff0c;連通域分析是指在圖像中尋找出彼此互相獨立的連通域并將其標記出來…

【最新鴻蒙應用開發】——Want信息載體

信息傳遞載體Want 1、概述 上一章節我們學習了UIAbility組件 【最新鴻蒙應用開發】——一篇搞懂什么是UIAbility-CSDN博客 &#xff0c;其中組件間的交互傳遞信息的媒介就是Want&#xff0c;本章節我們來更加深入學習Want的相關知識。 Want是一種對象&#xff0c;用于在應用組…

2. JavaScript 語法和數據類型

1. 基礎 JavaScript不區分大小寫 2. 注釋 // 單行注釋/* 這是一個更長的&#xff0c;多行注釋 *//* 然而&#xff0c;你不能&#xff0c;/* 嵌套注釋 */ 語法錯誤 */3. 聲明 var 聲明一個變量&#xff0c;可選初始化一個值。 let 聲明一個塊作用域的局部變量&#xff0c;可…

ORM(對象關系映射)概念詳解

一、技術難點 ORM&#xff0c;即對象關系映射&#xff08;Object-Relational Mapping&#xff09;&#xff0c;它的技術難點主要體現在如何將面向對象編程中的類和對象高效地映射到關系型數據庫中的表和記錄。具體來說&#xff0c;有以下幾個方面的技術挑戰&#xff1a; 數據類…

計算機畢業設計項目、管理系統、可視化大屏、大數據分析、協同過濾、推薦系統、SSM、SpringBoot、Spring、Mybatis、小程序項目編號1-500

大家好&#xff0c;我是DeBug&#xff0c;很高興你能來閱讀&#xff01;作為一名熱愛編程的程序員&#xff0c;我希望通過這些教學筆記與大家分享我的編程經驗和知識。在這里&#xff0c;我將會結合實際項目經驗&#xff0c;分享編程技巧、最佳實踐以及解決問題的方法。無論你是…

桌面型激光雕刻機的發展前景及TMC應用優勢

一、行業現狀 近兩年來&#xff0c;激光雕刻行業正處于快速發展階段。隨著人們生活水平的提高&#xff0c;對個性化、定制化產品的需求日益增加&#xff0c;激光雕刻以其獨特的創意和精美的效果&#xff0c;滿足了消費者對個性化產品的追求。同時&#xff0c;隨著科技的不斷進…

OCP 安裝 OceanBase集群(企業版3.2.4.1)

創建集群 登錄OCP界面 1.點擊左側工具欄中的集群 2.進入集群頁面后 點擊 右上角的創建集群 集群設置 進入 創建集群 頁面&#xff0c;進行 目標集群 配置 集群種類 根據 生產環境 選擇 分布式 或者 單機集中式&#xff0c;第一次安裝 集群類型 選擇 主集群。 注意&#xf…

計算機網絡到底是指什么?

計算機網絡是信息技術領域中最為核心和復雜的一部分&#xff0c;它涵蓋了眾多的技術原理和應用。下面&#xff0c;我們將從技術層面深入探討計算機網絡的相關內容。 一、計算機網絡的分層模型 計算機網絡的分層模型是網絡通信的基石&#xff0c;它將網絡通信過程劃分為不同的層…

怎么解決企業生產計劃排程的幾大難點?

生產計劃排程&#xff0c;作為企業管理中的核心環節&#xff0c;其復雜性和動態性一直困擾著眾多企業。然而&#xff0c;通過科學的策略和技術手段&#xff0c;這些難點并非不可攻克。 生產環境的動態變化&#xff0c;如臨時訂單改變、緊急插單的需求、產品流程變化等&#xff…

Linux中網絡配置項目筆記

1.NetworkManager安裝 (或者安裝network.service&#xff0c;不要一起裝防止網絡沖突) 有網絡的狀態下yum install 下載無網絡的狀態下使用預先下載rpm包 rpm -ivh systemctl start NetworkManager #啟動 systemctl stop NetworkManager #停止 systemctl restart NetworkMana…

各大AI模型訓練成本大比拼

像OpenAI的ChatGPT、谷歌的Gemini Ultra這樣的高級AI模型&#xff0c;訓練它們通常需要數百萬美元的費用&#xff0c;且該成本還在迅速上升。隨著計算需求的增加&#xff0c;訓練它們所需的計算能力的費用也在飆升。為此&#xff0c;AI公司正在重新考慮如何訓練這些生成式AI系統…

描述Servlet監聽器的類型和用途

Servlet監聽器是Servlet規范中定義的一種特殊的類&#xff0c;用于監聽Web應用程序中特定事件的發生。它們按照監聽的對象和事件類型&#xff0c;可以劃分為多種類型&#xff0c;每種類型都有其特定的用途。 監聽器的類型 按照監聽對象劃分 應用程序環境對象&#xff08;Serv…

華為OD刷題C卷 - 每日刷題 12(數組連續和,求最多可以派出多少支團隊)

1、&#xff08;數組連續和&#xff09;&#xff1a; 這段代碼是解決“數組連續和”的問題。它提供了一個Java類Main&#xff0c;其中包含main方法和getResult方法&#xff0c;用于計算給定數組中有多少個連續區間的和大于等于給定值x。 main方法首先讀取數組的長度n和閾值x&…

【Javascript修煉篇】如何對JSON格式進行轉換

這將是我們幾乎日常都會用到的一個超實用函數。 根據數據的多樣性與結構&#xff0c;API 的響應可能會返回極其復雜的 JSON 對象。有時候&#xff0c;僅僅從整個 JSON 中抓取一個字段可能就不太夠用了。我們可能需要提取多個字段來展示在網頁上。每次手動遍歷這樣的復雜 JSON …

兩站圖片滑動對比效果實現(VUE3)

像這種圖片滑動對比的效果&#xff0c;網上還不少見吧&#xff0c;但是網上卻不好找到完整現成的實現代碼&#xff0c;我找到幾個地方有類似的代碼&#xff0c;但是都不好直接移植到代碼里&#xff0c;因為很多都是使用原生htmlcssjs實現&#xff0c;太復雜了。反而不好應用到v…

Qt for Android 之 OpenCV編譯(Windows下編譯)

簡介 前兩天剛好更新了4.10, 這里以4.10作為示例進行編譯&#xff0c; Qt版本是Qt6.6.2。 準備OpenCV的Android庫 一. 使用官方編譯好的庫 1. 下載OpenCV android SDK opencv-4.10.0-android-sdk.zip 2. 解壓縮 官方提供的包含了多個架構的opencv android庫 二. 自行編譯…

十三、【源碼】ResultMap解析

源碼地址&#xff1a;https://github.com/mybatis/mybatis-3/ 倉庫地址&#xff1a;https://gitcode.net/qq_42665745/mybatis/-/tree/13-resultMap ResultMap解析 分為兩部分&#xff1a;解析和使用 1.解析 解析XML的時候單獨解析所有的resultMap標簽&#xff0c;封裝成Re…