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

ThreeJS-VUE-3DMax 實現(xiàn)Web3D(簡單測試)

這篇具有很好參考價值的文章主要介紹了ThreeJS-VUE-3DMax 實現(xiàn)Web3D(簡單測試)。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

? ? ? ? 今天使用3DMax建模軟件進行3D模型的制作,并且加入動畫,通過threejs將模型及其動畫部署在VUE框架上。

一、環(huán)境及其開發(fā)包版本

? ? ? ? 1. VUE:3.3.4

? ? ? ? 2. threejs:0.158.0

? ? ? ? 3. vite:4.4.11

? ? ? ? 4. 3DMax2021

? ? ? ? 5. pycharm2021專業(yè)版

二、3DMax模型制作

? ? ? ? 簡單制作一個小植物和一個水壺,實現(xiàn)澆水后植物長大的動畫。

如何將3dmax結(jié)合前端,vue.js,前端,javascript,前端框架,npm,html

? ? ? ?UV展開,加個材質(zhì),上個顏色。

如何將3dmax結(jié)合前端,vue.js,前端,javascript,前端框架,npm,html

如何將3dmax結(jié)合前端,vue.js,前端,javascript,前端框架,npm,html

三、項目搭建

? ? ? ? 項目使用VUE框架。使用命令“npm init vue@latest”創(chuàng)建一個vue項目,并使用命令“npm i three”安裝threejs。

? ? ? ? 在vue文件中引入JavaScript文件。如何將3dmax結(jié)合前端,vue.js,前端,javascript,前端框架,npm,html

? ? ? ? ttt.js文件代碼如下:

import * as THREE from "three"
import {OrbitControls} from "three/addons/controls/OrbitControls.js";
import {GLTFLoader} from "three/addons/loaders/GLTFLoader.js";

let width = window.innerWidth
let height = window.innerHeight

const scene = new THREE.Scene()
scene.background = new THREE.Color(0x7F7F61)

const camera = new THREE.PerspectiveCamera(60, width / height)
camera.position.set(-3, 10, 10)
camera.lookAt(0, 0, 0)
scene.add(camera)

const aLignt = new THREE.AmbientLight(new THREE.Color(0xffffff), 2)
scene.add(aLignt)

const pointLight = new THREE.PointLight(new THREE.Color(0xffffff), 2, 0, 0)
pointLight.position.set(15, 15, 15)
scene.add(pointLight)

const axes = new THREE.AxesHelper(50)
// scene.add(axes)

const spriteMaterial = new THREE.SpriteMaterial({
    map: new THREE.TextureLoader().load('./src/assets/水滴.png'),
    transparent: true,
    opacity: 0.3
})
const groups = new THREE.Group()
let spritey = 2.91
let spriteflag = false
for (let i = 0; i < 200; i++) {
    const sprite = new THREE.Sprite(spriteMaterial)
    sprite.scale.set(0.1, 0.2, 0.1)
    const x = Math.random() - Math.random()
    const y = Math.random() * spritey
    // const y = spritey
    const z = Math.random() - Math.random()
    sprite.position.set(x, y, z)
    groups.add(sprite)
}
let ganzi, yezi1, yezi2, yezi3, yezi4, huapen
const group = new THREE.Group()
group.name = 'group'
let geometry, mesh
let track1, track2, track3, track4, track5
let clip, mixer, actionAnimation, clock
const loader = new GLTFLoader();
loader.load('./src/assets/1111.glb', gltf => {
    console.log(gltf)
    // gltf.scene.scale.set(5,5,5)
    group.add(gltf.scene)
    scene.add(group)
    huapen = group.getObjectByName('花盆')
    yezi1 = group.getObjectByName('葉子1')
    yezi2 = group.getObjectByName('葉子2')
    yezi3 = group.getObjectByName('葉子3')
    yezi4 = group.getObjectByName('葉子4')
    ganzi = group.getObjectByName('桿子')


    mixer = new THREE.AnimationMixer(group)
    actionAnimation = mixer.clipAction(gltf.animations[0])
    actionAnimation.timeScale = 0
    actionAnimation.clampWhenFinished = true
    actionAnimation.loop = THREE.LoopOnce
    actionAnimation.play()
    clock = new THREE.Clock()
})
let mixershuihu, actionanimationshuihu, c1
loader.load('./src/assets/11111.glb', gltf => {
    console.log(gltf)
    group.add(gltf.scene.getObjectByName('水壺'))
    group.getObjectByName('水壺').visible = false
    mixershuihu = new THREE.AnimationMixer(group.getObjectByName('水壺'))
    actionanimationshuihu = mixershuihu.clipAction(gltf.animations[0])
    actionanimationshuihu.timeScale = 4
    actionanimationshuihu.clampWhenFinished = false
    actionanimationshuihu.loop = THREE.LoopOnce
    c1 = new THREE.Clock()

    mixershuihu.addEventListener('finished', e => {
        group.getObjectByName('水壺').visible = false
        actionanimationshuihu.stop()
        scene.remove(groups)
        spriteflag = false
    })

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

renderer.domElement.style.position = 'absolute'
renderer.domElement.style.top = '0'
renderer.domElement.style.left = '0'
renderer.domElement.style.bottom = '0'
renderer.domElement.style.right = '0'
renderer.domElement.style.zIndex = '-1'

let select = 0
const btn = document.getElementById('add')
btn.addEventListener('click', function () {
    if (select !== 2) {
        select++
    } else {
        select = 0
    }
    group.getObjectByName('水壺').visible = true
    actionanimationshuihu.play()
    groups.traverse(m => {
        m.position.y = Math.random() * spritey
    })
    scene.add(groups)
    spriteflag = true
})

const control = new OrbitControls(camera, renderer.domElement);

(function animation() {
    if (mixer && clock) {
        mixer.update(clock.getDelta())
        if (select === 1) {
            actionAnimation.timeScale = 1
            if (clock.getElapsedTime() >= 5) {
                actionAnimation.timeScale = 0
            }
        } else if (select === 2) {
            actionAnimation.timeScale = 1
            if (clock.getElapsedTime() >= 22) {
                actionAnimation.timeScale = 0
            }
        }
    }
    if (mixershuihu && c1) {
        mixershuihu.update(c1.getDelta())
    }

    if (spriteflag) {
        groups.traverse(m => {
            if (m.position.y >= 0.2) {
                m.position.y -= 0.02
            }
        })
    }


    renderer.render(scene, camera)
    requestAnimationFrame(animation)
})();

window.onresize = () => {
    camera.aspect = window.innerWidth / window.innerHeight
    camera.updateProjectionMatrix()
    renderer.setSize(window.innerWidth, window.innerHeight)
}

document.getElementById('data-three-js').appendChild(renderer.domElement)

四、效果圖

? ? ? ? 項目搭建完畢,使用命令“npm run dev”運行。

? ? ? ? 點擊澆水按鈕,實現(xiàn)澆水后植物長大效果,效果圖如下:

如何將3dmax結(jié)合前端,vue.js,前端,javascript,前端框架,npm,html文章來源地址http://www.zghlxwxcb.cn/news/detail-777956.html

? ? ? ? ?

到了這里,關(guān)于ThreeJS-VUE-3DMax 實現(xiàn)Web3D(簡單測試)的文章就介紹完了。如果您還想了解更多內(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)文章

  • 什么是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開發(fā)經(jīng)驗分享:基于Three.js的Web3D建模案例

    Web3D開發(fā)經(jīng)驗分享:基于Three.js的Web3D建模案例

    個人主頁:?左本W(wǎng)eb3D,更多案例預(yù)覽請點擊==》?在線案例 個人簡介:專注Web3D使用ThreeJS實現(xiàn)3D效果技巧和學(xué)習(xí)案例 ?? ??積跬步以至千里,致敬每個愛學(xué)習(xí)的你。喜歡的話請三連,有問題請私信或者加微信 ????????隨著互聯(lián)網(wǎng)的快速發(fā)展,Web3D技術(shù)也越來越成熟,越來越

    2024年02月13日
    瀏覽(20)
  • 初識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)
  • 17個WebGL框架及Web3D圖形庫

    17個WebGL框架及Web3D圖形庫

    WebGL是基于OpenGL的JavaScript API庫,允許Web瀏覽器在瀏覽器中渲染3D / 2D圖形,而無需安裝額外的插件、桌面應(yīng)用程序。WebGL允許通過瀏覽器使用機器GPU將3D圖形渲染成HTML頁面。WebGL目前在大多數(shù)瀏覽器(如Google Chrome,Mozilla Firefox和Safari)中都受支持。WebGL可以通過瀏覽器設(shè)置或使用

    2024年02月06日
    瀏覽(32)
  • 純干貨!最全WebGL框架及Web3D圖形庫

    純干貨!最全WebGL框架及Web3D圖形庫

    WebGL 是一個 JavaScript API,用于在 Web 瀏覽器中呈現(xiàn)交互式 2D 和 3D 圖形。它基于 OpenGL ES,這是一種廣泛使用的嵌入式系統(tǒng)圖形渲染標(biāo)準(zhǔn)。 WebGL 通常用于各種應(yīng)用程序,包括: 3D 圖形: WebGL 允許開發(fā)人員在 Web 瀏覽器中創(chuàng)建和顯示 3D 圖形,從而實現(xiàn)沉浸式體驗、游戲、模擬和

    2024年02月21日
    瀏覽(24)
  • 智慧大棚Web3D可視化系統(tǒng) 構(gòu)建高效農(nóng)業(yè)場景

    智慧大棚Web3D可視化系統(tǒng) 構(gòu)建高效農(nóng)業(yè)場景

    農(nóng)業(yè)的發(fā)展離不開農(nóng)作物的生長,而農(nóng)作物的生長會受到多方面的限制,主要是外界因素,因此,智慧農(nóng)業(yè)便將傳統(tǒng)農(nóng)業(yè)與科技結(jié)合起來,衍生出智慧大棚,從而讓農(nóng)業(yè)得以快速發(fā)展。 我國農(nóng)業(yè)的基本現(xiàn)狀是“大國小農(nóng)”,農(nóng)業(yè)產(chǎn)業(yè)發(fā)展仍然受限于農(nóng)業(yè)從業(yè)人員匱乏、年齡老

    2023年04月19日
    瀏覽(25)
  • 智慧垃圾焚燒發(fā)電廠Web3D可視化管理系統(tǒng)

    智慧垃圾焚燒發(fā)電廠Web3D可視化管理系統(tǒng)

    隨著我國生產(chǎn)力的飛速發(fā)展和經(jīng)濟的迅速崛起,城市生活垃圾作為一種生物質(zhì)能,將其燃燒用于發(fā)電,可以有效節(jié)約化石能源。 隨著城鎮(zhèn)化進程加速、人民生活水平持續(xù)提升,城市生活垃圾產(chǎn)生量也在逐年增長。生活垃圾是“放錯地方的資源”,能否處理好這些“放錯地方的資

    2024年02月08日
    瀏覽(30)
  • 3dmax 打開查看模型

    3dmax 打開查看模型

    下載一個3dmax模型如下圖;包含一個.max文件,一個文件夾; 從File菜單打開該模型;打開對話框右側(cè)會顯示模型的一個縮略圖; 有任何情況均忽略,直接打開,出現(xiàn)一個Scene Converter對話框,關(guān)閉此對話框; ?打開后如下;左側(cè)面板顯示模型的組成,對象樹;左側(cè)面板頂部有

    2024年02月04日
    瀏覽(16)
  • 3dmax軸約束操作

    3dmax軸約束操作

    軸約束是一種輔助操作,是為了更準(zhǔn)確精確的移動物體; 當(dāng)新建一個茶壺時,使用移動工具,可以任意移動茶壺; ? ? ?有時候需要使物體準(zhǔn)確處于另一個物體上方或某側(cè),之類的操作;這可以使用軸約束; 按下快捷鍵F5 F6 F7;X、Y、Z軸分別會高亮, ? ? ? 當(dāng)某個坐標(biāo)軸高

    2024年02月13日
    瀏覽(20)
  • 3dmax快捷鍵

    3dmax快捷鍵 2017.9.27 W(移動)/T(頂視圖)/P(透視圖)/F(前視圖)/B(底視圖)/ALT+Q(單獨顯示選中特體)/ALT+W(視圖最大化)/ALT+X(全屏顯示)/SHIFT+L(隱藏/顯示燈光)/SHIFT+C(隱藏/顯示相機)/E(旋轉(zhuǎn))/Q(選擇)/S(捕捉的打開/關(guān)閉)/F5(鎖定X軸)/F6(鎖定Y軸)/F3(顯

    2024年02月04日
    瀏覽(21)

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

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

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

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包