国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

Three.js之頂點UV坐標(biāo)、紋理貼圖

這篇具有很好參考價值的文章主要介紹了Three.js之頂點UV坐標(biāo)、紋理貼圖。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

參考資料

  • 創(chuàng)建紋理貼圖
  • UV動畫

知識點

注:基于Three.jsv0.155.0文章來源地址http://www.zghlxwxcb.cn/news/detail-712430.html

  • 紋理貼圖加載器:TextureLoader
  • 紋理對象:Texture
  • 顏色貼圖屬性.map
  • 頂點UV坐標(biāo)
  • 圓形平面設(shè)置紋理貼圖:CircleGeometry
  • 設(shè)置陣列模式:THREE.RepeatWrapping
  • 網(wǎng)格地面輔助觀察:GridHelper
  • 紋理對象.offset屬性

代碼實現(xiàn)

<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<title>Three.js</title>
</head>
  <body>
  </body>
  <!-- 具體路徑配置,你根據(jù)自己文件目錄設(shè)置,我的是課件中源碼形式 -->
  <script type="importmap">
    {
      "imports": {
        "three": "./js/three.module.js",
        "three/addons/": "../three.js/examples/jsm/"
      }
    }
  </script>
  <script type="module">
    import * as THREE from 'three';
    import { OrbitControls } from 'three/addons/controls/OrbitControls.js';

    const width = 800
    const height = 500

    // 場景
    const scene = new THREE.Scene();

    // ********** 本章知識點示例代碼 Start **********
    // 1. 創(chuàng)建紋理貼圖
    // 幾何體
    const geometry = new THREE.SphereGeometry(100);
    // const geometry = new THREE.BoxGeometry(100, 100 ,100);
    // 文理貼圖
    const textureLoader = new THREE.TextureLoader();
    const texture = textureLoader.load('./img/6.JPG');

    // 材質(zhì) 
    const material = new THREE.MeshLambertMaterial({
      // color:0x0000ff,
      map: texture,
    });

    material.map = texture;

    const mesh1 = new THREE.Mesh(geometry, material);
    scene.add(mesh1);

    // 2. 自定義頂點UV坐標(biāo)
    scene.remove(mesh1);

    const geometry2 = new THREE.PlaneGeometry(200, 100);
    console.log('?? ~ file: 5頂點UV坐標(biāo)、紋理貼圖.html:29 ~ geometry.attributes.uv:', geometry.attributes.uv);
    console.log('?? ~ file: 5頂點UV坐標(biāo)、紋理貼圖.html:29 ~ geometry.attributes.position:', geometry.attributes.position);
    const textureLoader2 = new THREE.TextureLoader();
    const texture2 = textureLoader2.load('./img/6.JPG');

    geometry2.attributes.uv = new THREE.Float32BufferAttribute([
      0, 1,
      1, 1,
      0, 0,
      1, 0,
    ], 2);

    // 材質(zhì) 
    const material2 = new THREE.MeshLambertMaterial({
      // color:0x0000ff,
      map: texture2,
    });

    const mesh2 = new THREE.Mesh(geometry2, material2);
    scene.add(mesh2);

    // 3. 圓形平面設(shè)置紋理貼圖
    scene.remove(mesh2);

    const geometry3 = new THREE.CircleGeometry(100);
    const textureLoader3 = new THREE.TextureLoader();
    const texture3 = textureLoader3.load('./img/6.JPG');

    // 材質(zhì) 
    const material3 = new THREE.MeshLambertMaterial({
      // color:0x0000ff,
      map: texture3,
    });

    const mesh3 = new THREE.Mesh(geometry3, material3);
    scene.add(mesh3);

    // 4. 紋理對象Texture陣列
    scene.remove(mesh3);

    const geometry4 = new THREE.PlaneGeometry(400, 400);
    const textureLoader4 = new THREE.TextureLoader();
    const texture4 = textureLoader4.load('./img/6.JPG');
    texture4.wrapS = THREE.RepeatWrapping;
    texture4.wrapT = THREE.RepeatWrapping;
    texture4.repeat.set(10, 10);

    // 材質(zhì) 
    const material4 = new THREE.MeshLambertMaterial({
      // color:0x0000ff,
      map: texture4,
      side: THREE.DoubleSide,
    });

    const mesh4 = new THREE.Mesh(geometry4, material4);
    mesh4.rotateX(-Math.PI / 2);
    scene.add(mesh4);

    
    // 5. 矩形Mesh+背景透明png貼圖
    scene.remove(mesh4);

    const geometry5 = new THREE.PlaneGeometry(600, 200);
    const textureLoader5 = new THREE.TextureLoader();
    const texture5 = textureLoader5.load('./img/6.JPG');
    texture5.wrapS = THREE.RepeatWrapping;

    // 材質(zhì) 
    const material5 = new THREE.MeshLambertMaterial({
      // color:0x0000ff,
      map: texture5,
      side: THREE.DoubleSide,
      transparent: true,
    });

    const mesh5 = new THREE.Mesh(geometry5, material5);
    mesh5.rotateX(-Math.PI / 2);
    scene.add(mesh5);

    // 網(wǎng)格地面輔助觀察
    const grid = new THREE.GridHelper(500, 10);
    grid.position.set(0, -0.01, 0);
    scene.add(grid);
    mesh5.position.y = 1

    // ********** 本章知識點示例代碼 End **********
    
    

    // 光源
    const pointLight = new THREE.PointLight(0xffffff, 1.0, 0, 0);
    pointLight.position.set(200, 200, 200 );
    scene.add(pointLight);

    // 環(huán)境光
    const ambientLight = new THREE.AmbientLight( 0xffffff, 0.2);
    scene.add( ambientLight );

    // 坐標(biāo)系
    const axes = new THREE.AxesHelper(200);
    scene.add(axes);

    // 相機
    const camera = new THREE.PerspectiveCamera(75, width/height, 0.1, 1000);
    camera.position.set(200, 200, 200);
    camera.lookAt(scene.position);

    // 渲染器
    const renderer = new THREE.WebGLRenderer();
    renderer.setSize(width, height);
    renderer.render(scene, camera);
    document.body.appendChild(renderer.domElement);

    // 控制器
    const controls = new OrbitControls(camera, renderer.domElement);
    controls.addEventListener('change', () => {
      renderer.render(scene, camera);
    });

    // 渲染循環(huán)
    function render() {
        texture5.offset.x += 0.005;
        renderer.render(scene, camera);
        requestAnimationFrame(render);
    }
    render();
  </script>
</html>

到了這里,關(guān)于Three.js之頂點UV坐標(biāo)、紋理貼圖的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • Three.js 設(shè)置模型材質(zhì)紋理貼圖和修改材質(zhì)顏色,材質(zhì)透明度,材質(zhì)網(wǎng)格

    Three.js 設(shè)置模型材質(zhì)紋理貼圖和修改材質(zhì)顏色,材質(zhì)透明度,材質(zhì)網(wǎng)格

    1 traverse (模型循環(huán)遍歷方法) 2. THREE.TextureLoader(用于加載和處理圖片紋理) 3. THREE.MeshLambertMaterial(用于創(chuàng)建材質(zhì)) 4. getObjectByProperty(通過材質(zhì)的屬性值獲取材質(zhì)信息) 在上一篇 Three.js加載外部glb,fbx,gltf,obj 模型文件 的文章基礎(chǔ)上加入onSetSystemModelMap (設(shè)置模型材質(zhì)方法

    2024年02月13日
    瀏覽(28)
  • Unity 頂點vertices,uv,與圖片貼圖,與mesh

    Unity 頂點vertices,uv,與圖片貼圖,與mesh

    mesh就是組成3d物體的三角形們。 mesh由頂點組成的三角形組成,三角形的大小 并不 需要一樣,由頂點之間的位置決定。 mesh可以是一個或者多個面。 貼圖的原點在左下角,uv是貼圖的坐標(biāo),數(shù)量和頂點數(shù)一樣(不是100%確定,比如前后左右4個面,貼圖最終如何封閉,我還不知

    2024年02月10日
    瀏覽(35)
  • 3ds max 烘培世界坐標(biāo)到貼圖/頂點色

    3ds max 烘培世界坐標(biāo)到貼圖/頂點色

    Normalize(objectNormal) * 0.5 +0.5 ? ?右鍵復(fù)制 , 到mesh上粘貼 ?? ? 貼圖導(dǎo)入為BC7 ? ?

    2024年02月15日
    瀏覽(15)
  • 什么是Web3D?Web3D技術(shù)發(fā)展歷程以及Web3D應(yīng)用場景

    什么是Web3D?Web3D技術(shù)發(fā)展歷程以及Web3D應(yīng)用場景

    當(dāng)今的互聯(lián)網(wǎng)已經(jīng)邁入了第三代,這被稱為Web3.0,而Web3D正是Web3.0的其中一個技術(shù)分支。Web3D是指將三維圖形技術(shù)應(yīng)用于Web上的技術(shù),它是將3D圖形和Web技術(shù)結(jié)合起來的一個分支,可以使用戶在Web上以更真實、更直觀的方式瀏覽和操作虛擬場景。本文將介紹什么是Web3D、Web3D技術(shù)

    2024年02月15日
    瀏覽(26)
  • web3d-three.js場景設(shè)計器-天空包圍盒-TWEEN.js

    web3d-three.js場景設(shè)計器-天空包圍盒-TWEEN.js

    THREE.JS 實現(xiàn)場景天空包圍盒,為了讓場景背景更具體,而不是呆板的純色,可以給廠家添加圍繞的包圍盒。 這里使用球體來實現(xiàn),球體中央則是場景 給球體添加天空的漸變色 加入場景 代碼如下 function createSky(?hemiLight) { ? const vertexShader = `varying vec3 vWorldPosition; ? ? void main

    2024年01月23日
    瀏覽(21)
  • web3d-three.js場景設(shè)計器-sprite廣告牌

    web3d-three.js場景設(shè)計器-sprite廣告牌

    three.js使用Sprite精靈實現(xiàn)文字或者圖片廣告牌 1.將文字繪制到Canvas,調(diào)整對應(yīng)寬高。 2.作為Cavans材質(zhì)綁定到Sprite 3.加載到場景調(diào)整適當(dāng)?shù)膕cale function createLabel({ text, fontSize, textColor, color, imageUrl }) { ? ? return new Promise((resolve, reject) = { ? ? ? ? let canvas = document.createElement(\\\'canvas\\\')

    2024年02月02日
    瀏覽(59)
  • 初識web3D--webGL/webGPU

    當(dāng)今互聯(lián)網(wǎng)時代,我們已經(jīng)逐漸習(xí)慣了瀏覽和享受豐富多樣的網(wǎng)絡(luò)內(nèi)容。從文字、圖片到視頻,我們可以在Web上暢游于各種信息和娛樂資源之間。然而,隨著科技的不斷進步,一個全新而令人興奮的概念正在嶄露頭角——Web3D。 Web3D是一種革命性的技術(shù),它將三維圖形、虛擬

    2024年02月04日
    瀏覽(22)
  • Three.js--》幾何體頂點知識講解

    Three.js--》幾何體頂點知識講解

    目錄 幾何體頂點位置數(shù)據(jù) 點線定義幾何體頂點數(shù)據(jù) 網(wǎng)格模型定義幾何體頂點數(shù)據(jù) 頂點法線數(shù)據(jù) 實現(xiàn)陣列立方體與相機適配 常見幾何體簡介 幾何體的旋轉(zhuǎn)、縮放、平移方法 本篇文章主要講解幾何體的頂點概念,相對偏底層一些,不過掌握之后會更加深入理解three.js的幾何體

    2024年02月02日
    瀏覽(26)
  • web3d-three.js場景設(shè)計器-mesh網(wǎng)格添加多模型-模型描述隨動

    web3d-three.js場景設(shè)計器-mesh網(wǎng)格添加多模型-模型描述隨動

    給場景中的模型加上廣告牌描述,可以在模型的MESH里添加Sprite,配上相應(yīng)的文字, 描述Sprite的位置則是在mesh中的相對位置,比如模型高10,那么我們可以給一個y等于10 來進行適配,這樣在移動模型mesh網(wǎng)格時可以整體移動。 function createBox(data) { ? const geometry = new THREE.BoxGeom

    2024年02月21日
    瀏覽(22)
  • 【Three.js】Three.js中的紋理—圖像應(yīng)用和屬性調(diào)整

    【Three.js】Three.js中的紋理—圖像應(yīng)用和屬性調(diào)整

    ? Three.js是一種強大的JavaScript庫,用于創(chuàng)建基于Web的交互式3D圖形和動畫。在Three.js中,紋理是一項重要的功能,它允許我們將圖像應(yīng)用到幾何體對象上,并通過調(diào)整紋理的屬性來實現(xiàn)更豐富的視覺效果。 本文將介紹Three.js中的紋理功能,并演示如何將圖片作為紋理應(yīng)用到幾何

    2024年02月15日
    瀏覽(18)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包