亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

threejs后期處理的基本使用方法之加特效

 更新時(shí)間:2022年01月24日 15:58:09   作者:乘風(fēng)轉(zhuǎn)舵  
這篇文章主要給大家介紹了關(guān)于threejs后期處理的基本使用方法之加特效的相關(guān)資料,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下

前言

后期處理:簡(jiǎn)單的說(shuō)就是先渲染一張圖存起來(lái),在這張圖上面"添油加醋",處理完后再渲染到屏幕上。這一過(guò)程three進(jìn)行了封裝,使用現(xiàn)成的可以更快實(shí)現(xiàn)需求

基本代碼

// 引入后期處理基本的對(duì)象
import { EffectComposer } from 'three/examples/jsm/postprocessing/EffectComposer.js'
import { RenderPass } from 'three/examples/jsm/postprocessing/RenderPass.js'
...
//  因?yàn)槭墙榻B后期渲染,省略場(chǎng)景初始化等代碼

// 初始化效果組合器
this.EffectComposer = new EffectComposer(this.renderer)
// 添加基本的渲染通道
this.RenderPass = new RenderPass(this.scene, this.camera)
// 把通道加入到組合器
this.EffectComposer.addPass(this.RenderPass)

// 渲染方法,不斷調(diào)用render()
_animate() {
  requestAnimationFrame(this._animate.bind(this))
  // 組合器執(zhí)行渲染
 this.EffectComposer.render()
}

基本流程

  • 初始化一個(gè)效果組合器
  • 把需要用的若干通道(也就是要進(jìn)行的操作)依次添加到組合器中
  • 組合器會(huì)按順序執(zhí)行各通道內(nèi)的操作,上一通道的操作結(jié)果會(huì)傳遞給下一通道,直至最后都操作完,然后渲染到屏幕上

核心函數(shù)介紹

EffectComposer 效果組合器

作用:管理了后期處理的過(guò)程,根據(jù)通道的插入順序,來(lái)執(zhí)行通道內(nèi)的代碼(主要為著色器代碼)

構(gòu)造函數(shù)

需要傳入平時(shí)初始化three場(chǎng)景時(shí)的渲染器WebGLRenderer, 用來(lái)后續(xù)渲染場(chǎng)景

// 引入
import { EffectComposer } from 'three/examples/jsm/postprocessing/EffectComposer.js'

this.EffectComposer = new EffectComposer(渲染器)

重要方法:

addPass

this.EffectComposer.addPass(通道)

給EffectComposer添加后期處理通道,可以添加多個(gè),依次執(zhí)行

render

this.EffectComposer.render()

渲染,循環(huán)調(diào)用通道的render()方法

RenderPass 渲染通道

構(gòu)造函數(shù)

需要傳入初始化場(chǎng)景時(shí)生成的場(chǎng)景對(duì)象跟相機(jī)對(duì)象

this.RenderPass = new RenderPass(this.scene, this.camera)

RenderPass通道的作用是把場(chǎng)景和相機(jī)作為參數(shù)傳入,獲得場(chǎng)景的渲染結(jié)果,不對(duì)渲染結(jié)果做特定處理。
簡(jiǎn)單說(shuō)就是RenderPass用來(lái)生成第一張?jiān)紙D,用來(lái)傳給后面通道使用,所以一般RenderPass會(huì)作為第一個(gè)通道

重要屬性:

renderToScreen

默認(rèn)值是false,true將處理的結(jié)果保存到幀緩沖區(qū),false直接顯示在canvas畫(huà)布上面。

ShaderPass 著色器通道

需要傳入自定義的著色器代碼,控制渲染

const effectCopyPass = new ShaderPass(著色器代碼)

著色器代碼格式可以參照CopyShader.js three/examples/jsm/shaders/CopyShader.js

官方案例

鏈接

threejs.org/examples/?q…

官方有很多封裝好的通道,可以拿來(lái)直接使用

通道相關(guān)代碼位置

three/examples/jsm/postprocessing/

案例演示

電脈沖故障風(fēng)效果

代碼

// 引入
import { GlitchPass } from 'three/examples/jsm/postprocessing/GlitchPass.js'
// 初始化通道
const Pass = new GlitchPass()
// 將此通道結(jié)果渲染到屏幕
Pass.renderToScreen = true
// 把通道加入到組合器
this.EffectComposer.addPass(Pass)

描邊效果

代碼

// 傳入長(zhǎng)寬、場(chǎng)景、相機(jī)
const Pass = new OutlinePass(new THREE.Vector2(this.width, this.height), this.scene, this.camera)
// 將此通道結(jié)果渲染到屏幕
Pass.renderToScreen = true
// OutlinePass相關(guān)屬性設(shè)置
Pass.visibleEdgeColor = new THREE.Color(76, 148, 156) // 可見(jiàn)邊緣的顏色
Pass.hiddenEdgeColor = new THREE.Color(0, 1, 0) // 不可見(jiàn)邊緣的顏色
Pass.edgeGlow = 1.0 // 發(fā)光強(qiáng)度
Pass.usePatternTexture = false // 是否使用紋理圖案
Pass.edgeThickness = 2.0 // 邊緣濃度
Pass.edgeStrength = 2.0  // 邊緣的強(qiáng)度,值越高邊框范圍越大
Pass.pulsePeriod = 0 // 閃爍頻率,值越大頻率越低

// 一般生產(chǎn)環(huán)境中會(huì)配合鼠標(biāo)事件,來(lái)改變selectedObjects,使選中的物體描邊
Pass.selectedObjects = [需要添加外邊框的網(wǎng)格模型]
// 將通道加入組合器
this.EffectComposer.addPass(Pass)

泛光效果

BloomPass的參數(shù)

  • strength 泛光效果的強(qiáng)度,值越高明亮區(qū)域越明顯,較暗區(qū)域的亮度也會(huì)變高
  • kernelSize 泛光效果的偏移量
  • sigma 銳利程度,值越高,泛光越模糊
  • resolution 泛光效果的解析圖,值太低方塊化就會(huì)加重

代碼

// 引入
import { BloomPass } from 'three/examples/jsm/postprocessing/BloomPass.js'
import { CopyShader } from 'three/examples/jsm/shaders/CopyShader.js'
import { ShaderPass } from 'three/examples/jsm/postprocessing/ShaderPass.js'

// 參數(shù)默認(rèn)值strength = 1, kernelSize = 25, sigma = 4, resolution = 256
const Pass = new BloomPass(2.5, 25, 0.1, this.width)
// 加入到組合器
this.EffectComposer.addPass(Pass)

// BloomPass通道不能通過(guò)renderToScreen=true將結(jié)果渲染到屏幕上,
// 所以需要再加一個(gè)通道effectCopyPass來(lái)完成輸出結(jié)果這一步
// effectCopyPass通道沒(méi)有任何特殊效果, 只是輸出結(jié)果
const effectCopyPass = new ShaderPass(CopyShader)
effectCopyPass.renderToScreen = true
// 加入到組合器
this.EffectComposer.addPass(effectCopyPass)

總結(jié)

此文只介紹了幾個(gè)案例的基本使用,只要掌握使用的流程,其他的案例也可以很好的上手

到此這篇關(guān)于threejs后期處理的基本使用方法之加特效的文章就介紹到這了,更多相關(guān)threejs后期加特效內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • javascript 公用拖拽類代碼

    javascript 公用拖拽類代碼

    兼容Event對(duì)象等 拖拽類代碼
    2008-12-12
  • Jquery+javascript實(shí)現(xiàn)支付網(wǎng)頁(yè)數(shù)字鍵盤

    Jquery+javascript實(shí)現(xiàn)支付網(wǎng)頁(yè)數(shù)字鍵盤

    這篇文章主要為大家詳細(xì)介紹了Jquery+javascript實(shí)現(xiàn)支付網(wǎng)頁(yè)數(shù)字鍵盤,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-12-12
  • 微信小程序自定義滾動(dòng)選擇器

    微信小程序自定義滾動(dòng)選擇器

    這篇文章主要為大家詳細(xì)介紹了微信小程序自定義滾動(dòng)選擇器,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-07-07
  • webpack常用配置總覽(小結(jié))

    webpack常用配置總覽(小結(jié))

    這篇文章主要介紹了webpack常用配置總覽(小結(jié)),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-11-11
  • JavaScript工具庫(kù)MyTools詳解

    JavaScript工具庫(kù)MyTools詳解

    這篇文章主要為大家詳細(xì)介紹了JavaScript工具庫(kù)MyTools的相關(guān)資料,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-01-01
  • Javascript實(shí)現(xiàn)拖拽排序的代碼

    Javascript實(shí)現(xiàn)拖拽排序的代碼

    這篇文章主要介紹了Javascript實(shí)現(xiàn)拖拽排序的代碼,本文在vue運(yùn)行環(huán)境下給大家演示下效果圖,對(duì)js拖拽排序?qū)嵗a感興趣的朋友跟隨小編一起看看吧
    2022-09-09
  • js event事件的傳遞與冒泡處理

    js event事件的傳遞與冒泡處理

    與Netscape相反,IE中的事件傳遞方向是從事情發(fā)生的對(duì)象開(kāi)始,然后依次由該對(duì)象向所在的父節(jié)點(diǎn)傳遞。
    2009-12-12
  • node.js的事件機(jī)制

    node.js的事件機(jī)制

    本文主要介紹了node.js的事件機(jī)制,具有很好的參考價(jià)值,下面跟著小編一起來(lái)看下吧
    2017-02-02
  • 防止動(dòng)態(tài)加載JavaScript引起的內(nèi)存泄漏問(wèn)題

    防止動(dòng)態(tài)加載JavaScript引起的內(nèi)存泄漏問(wèn)題

    利用Script標(biāo)簽可以跨域加載并運(yùn)行一段JavaScript腳本, 但Neil Fraser先前已指出,腳本運(yùn)行后資源并沒(méi)被釋放,即使是Script標(biāo)簽移除后。
    2009-10-10
  • canvas繪制一個(gè)常用的emoji表情

    canvas繪制一個(gè)常用的emoji表情

    本文主要介紹了canvas繪制一個(gè)常用的emoji表情的示例代碼。具有很好的參考價(jià)值,下面跟著小編一起來(lái)看下吧
    2017-03-03

最新評(píng)論