vue+threeJS 大理石貼圖

? ? ? ? 嗨,我是小路。今天主要和大家分享的主題是“vue+threeJS 大理石貼圖”。? ? ? ??

通過 Vue 3 和 Three.js 實現大理石紋理效果,并將這種技術應用于產品展示、虛擬展覽、甚至是互動游戲之中,其潛力無窮。今天主要介紹基礎的大理石貼圖。

vue+threeJS 大理石貼圖示例圖

1.下載大理石圖片

定義:可以到百度上隨意找一張大理石的圖片,并將其一部分截圖下來。

2.創建球體并貼圖

//創建球體
let sphare;
const  createSphare = ()=>{//加載貼圖const texture = new THREE.TextureLoader().load("./tietu1.png");const sphareGeometry = new THREE.SphereGeometry(10, 32,32);const sphareMaterial = new THREE.MeshBasicMaterial({ map:texture});sphare = new THREE.Mesh(sphareGeometry, sphareMaterial);//模型上移sphare.position.y = 10;scene.add(sphare);
}

3.設置動畫

//渲染
const render = () => {//重復渲染requestAnimationFrame(render);//請求再次執行渲染函數render,渲染下一幀sphare.rotation.x += 0.01 ;//x軸旋轉速度sphare.rotation.y += 0.01 ;//y軸旋轉速度renderer.render(scene, camera); //執行渲染操作
}

二、實例代碼

<template><div class="pageBox"><div class="leftBox" ref="leftRef"></div><div class="rightBox" ref="rightRef" :style="{ background: bgColor }"></div></div></template>
<script setup>
import { onMounted, ref } from 'vue';
import * as THREE from 'three';
// 引入軌道控制器擴展庫OrbitControls.js
import { OrbitControls } from 'three/addons/controls/OrbitControls.js';const bgColor = ref("")const leftRef = ref();
const rightRef = ref()
// 定義相機輸出畫布的尺寸(單位:像素px)
let width = window.innerWidth; //寬度
let height = window.innerHeight; //高度
// 創建3D場景對象Scene
const scene = new THREE.Scene();
//設置背景色
scene.background = new THREE.Color(0xffffff);const camera = new THREE.PerspectiveCamera(75, width / height, 0.1, 1000);
camera.position.set(0, 20, 30);//創建一個平面
let plane;
const createPlan = () => {const planeGeometry = new THREE.PlaneGeometry(100, 100);const planMaterial = new THREE.MeshBasicMaterial({color: 0x999999, side: THREE.DoubleSide});plane = new THREE.Mesh(planeGeometry, planMaterial);plane.rotation.x = -Math.PI / 2scene.add(plane);
}
//創建球體
let sphare;
const  createSphare = ()=>{//加載貼圖const texture = new THREE.TextureLoader().load("./tietu1.png");const sphareGeometry = new THREE.SphereGeometry(10, 32,32);const sphareMaterial = new THREE.MeshBasicMaterial({ map:texture});sphare = new THREE.Mesh(sphareGeometry, sphareMaterial);//模型上移sphare.position.y = 10;scene.add(sphare);
}
// 創建渲染器對象
const renderer = new THREE.WebGLRenderer();onMounted(() => {initData()//添加相機空間const controls = new OrbitControls(camera, renderer.domElement);// 如果OrbitControls改變了相機參數,重新調用渲染器渲染三維場景controls.addEventListener('change', function () {renderer.render(scene, camera); //執行渲染操作});//監聽鼠標、鍵盤事件renderer.setSize(width, height); //設置three.js渲染區域的尺寸(像素px)//將innerHTML置空,避免append重復添加渲染leftRef.value.innerHTML = ''leftRef.value.append(renderer.domElement);})
const initData = () => {createPlan();createSphare();render();
}//渲染
const render = () => {//重復渲染requestAnimationFrame(render);//請求再次執行渲染函數render,渲染下一幀sphare.rotation.x += 0.01 ;//x軸旋轉速度sphare.rotation.y += 0.01 ;//y軸旋轉速度renderer.render(scene, camera); //執行渲染操作
}</script>
<style scoped lang="less">
.pageBox {width: 100%;height: 100vh;padding: 0;margin: 0;display: flex;justify-content: space-between;align-items: center;.rightBox {width: 100%;height: 100%;}
}
</style>

三、注意事項

? ? ? ?注意球體的設置,和貼圖的位置防止,其余的都可以查看參考的文章。

都看到這里了,記得【點贊】+【關注】喲。

參考文章:

vue3+three 搭建平面上滾動旋轉的幾何體-CSDN博客

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

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

相關文章

依賴倒轉原則:Java 架構設計的核心準則

在軟件開發的漫長演進歷程中&#xff0c;設計原則如同燈塔般指引著工程師構建可維護、可擴展的系統。其中&#xff0c;依賴倒轉原則&#xff08;Dependency Inversion Principle, DIP&#xff09;作為面向對象設計的五大核心原則之一&#xff0c;深刻影響著系統架構的穩定性與靈…

使用Frp搭建內網穿透,外網也可以訪問本地電腦。

一、準備 1、服務器&#xff1a;需要一臺外網可以訪問的服務器&#xff0c;不在乎配置&#xff0c;寬帶好就行。我用的是linux服務器。&#xff08;一般買一個1核1g的云服務器就行&#xff09;&#xff0c;因為配置高的服務器貴&#xff0c;所以這是個擇中辦法。 2、客戶端&a…

Spyglass:跨時鐘域同步(同步使能)

相關閱讀 Spyglasshttps://blog.csdn.net/weixin_45791458/category_12828934.html?spm1001.2014.3001.5482 簡介 同步使能方案主要用于數據信號跨時鐘域同步&#xff0c;該方案將一個控制信號同步至目標時鐘域并用其作為數據信號的捕獲觸發器的使能信號&#xff0c;如圖1所示…

人工智能 (AI) 在無線接入網絡 (RAN) 中的變革性作用

隨著電信行業向更智能、更高效的系統邁進&#xff0c;將 AI 集成到 RAN 中已不再是可有可無&#xff0c;而是至關重要。 隨著 6G 時代的到來&#xff0c;人工智能 (AI) 有望降低運營成本&#xff0c;并帶來更大的盈利機會。AI-RAN 正處于這一變革的前沿&#xff0c;在 RAN 環境…

多線程代碼案例-2 阻塞隊列

阻塞隊列 通過數據結構的學習&#xff0c;我們都知道了隊列是一種“先進先出”的數據結構。阻塞隊列&#xff0c;是基于普通隊列&#xff0c;做出擴展的一種特殊隊列。 特點 1、線程安全的 2、具有阻塞功能&#xff1a;1、如果針對一個已經滿了的隊列進行入隊列&#xff0c…

【筆記】記一次PyCharm的問題反饋

#工作記錄 最近更新至 PyCharm 社區版的最新版本后&#xff0c;我遇到了多個影響使用體驗的問題。令人感到不便的是&#xff0c;一些在舊版本中非常便捷的功能&#xff0c;在新版本中卻變得操作復雜、不夠直觀。過去&#xff0c;我一直通過 PyCharm 內置的故障報告與反饋機制反…

學習以任務為中心的潛動作,隨地采取行動

25年5月來自香港大學、OpenDriveLab 和智元機器人的論文“Learning to Act Anywhere with Task-centric Latent Actions”。 通用機器人應該在各種環境中高效運行。然而&#xff0c;大多數現有方法嚴重依賴于擴展動作標注數據來增強其能力。因此&#xff0c;它們通常局限于單一…

相關行業發展趨勢寫一個爬蟲程序

前兩篇我利用爬蟲進行營銷推廣&#xff0c;并且寫了一個品牌口碑爬蟲的代碼示例。現在根據轉向行業發展趨勢&#xff0c;可能是希望收集數據來分析市場動向、競爭對手動態或者新興技術趨勢。 技術實現方面&#xff0c;需要選擇合適的工具和庫。Python的requests和BeautifulSou…

MapReduce 實現 WordCount

在大數據處理領域&#xff0c;MapReduce 是一種極為重要的編程模型&#xff0c;它可以將大規模的數據處理任務分解為多個并行的子任務&#xff0c;從而高效地處理海量數據。WordCount&#xff08;詞頻統計&#xff09;是 MapReduce 中最經典的示例之一&#xff0c;通過它能很好…

GelSight Mobile 4.1 軟件更新推出先進測量工具與報告功能

GelSight Mobile 4.1 軟件完成版本更新&#xff0c;為表面分析領域帶來重要功能升級。此次更新圍繞測量工具與報告功能優化&#xff0c;助力用戶更高效地量化材料表面特征&#xff0c;減少現場測量時間&#xff0c;優化生產流程。 新型測量工具&#xff0c;增強復雜曲面分析能力…

base64加密為何可以直接找三方網站解密

你問得非常關鍵&#xff1a;**Base64 為什么“加密”后還能被網上輕松“解密”&#xff1f;**這是一個很多人容易誤解的點&#xff0c;下面我來用通俗的語言幫你徹底搞懂。 ? 1. Base64 根本不是加密算法 Base64 只是“編碼&#xff08;Encoding&#xff09;”&#xff0c;不是…

IP地址、端口、TCP介紹、socket介紹、程序中socket管理

1、IP地址&#xff1a;IP 地址就是 標識網絡中設備的一個地址&#xff0c;好比現實生活中的家庭地址。IP 地址的作用是 標識網絡中唯一的一臺設備的&#xff0c;也就是說通過IP地址能夠找到網絡中某臺設備。 2、端口&#xff1a;代表不同的進程,如下圖&#xff1a; 3、socket:…

【計算機網絡】HTTP/1.0,HTTP/1.1,HTTP/2,HTTP/3匯總講解,清晰表格整理面試重點對比

表格匯總 對比維度HTTP/1.0HTTP/1.1HTTP/2HTTP/3傳輸協議TCPTCPTCP/TLS&#xff08;默認加密&#xff09;UDP&#xff08;基于 QUIC 協議&#xff09;連接方式短連接&#xff08;每次請求/響應后斷開&#xff09;引入持久連接&#xff08;Persistent Connection&#xff09;&a…

LLaMA-Factory微調大模型Qwen2.5

1、開始ModelScope社區GPU環境 訓練或微調模型都是非常耗費算力的。如果電腦的配置不高,可使用一些云服務器來做這項工作。如ModelScope(魔搭)社區的GPU環境,目前提供36小時免費運算,足夠微調一個大模型了。 注冊ModelScope(魔搭)社區賬號(可能還要注冊或認證阿里云賬號)…

Python 3.13.3 安裝教程

原文來自&#xff1a;Python 3.13.3 安裝教程 | w3cschool筆記 &#xff08;請勿標記為付費&#xff01;&#xff01;&#xff01;&#xff09; Python 是一種廣泛使用的編程語言&#xff0c;廣泛應用于 Web 開發、科學計算、數據處理、人工智能等領域。Python 3.13.3 作為 P…

sqli-labs靶場29-31關(http參數污染)

目錄 前言 less29&#xff08;單引號http參數污染&#xff09; less30&#xff08;雙引號http參數污染&#xff09; less31(雙引號括號http參數污染) 前言 在JSP中&#xff0c;使用request.getParameter("id")獲取請求參數時&#xff0c;如果存在多個同名參數&a…

npm cross-env工具包介紹(跨平臺環境變量設置工具)

文章目錄 cross-env&#xff1a;跨平臺環境變量設置工具什么是cross-env&#xff1f;為什么需要cross-env&#xff1f;平臺差異帶來的問題 cross-env的工作原理核心功能技術實現 安裝與基本使用安裝步驟基本使用方法運行效果 高級使用技巧設置多個環境變量環境變量傳遞與鏈式命…

mac docker彈窗提示Docker 啟動沒有響應

一、原因分析 這臺筆記電腦是Mac M3操作系統,安裝Docker之后,Docker應用程序一直啟動不起來。 二、解決辦法 sudo rm /Library/PrivilegedHelperTools/com.docker.vmnetd sudo cp /Applications/Docker.app/Contents/Library/LaunchServices/com.docker.vmnetd /Library/Pri…

Golang基礎知識—cond

cond 通常指 sync.Cond&#xff0c;它是標準庫 sync 包中用于實現 條件變量 的同步原語。條件變量在多 goroutine 協作場景中非常有用&#xff0c;尤其在需要根據特定條件協調多個 goroutine 的執行順序時。 sync.Cond 的核心作用 條件變量用于 等待某個條件滿足 或 通知其他等…

MySQL 8.0 OCP 1Z0-908 題目解析(1)

題目001 Choose two. User fwuserlocalhost is registered with the SQL Enterprise Firewall and has been granted privileges for the sakila database. Examine these commands that you executed and the results: mysql> SELECT MODE FROM INFORMATION_SCHEMA.SQL…