使用react-three-fiber显示的3D模型中加入发光效果(泛光)

背景概述

我想尽可能地在Web站点上以Blender创建的3D模型的原貌显示它们,以此来渲染通过Blender创建的3D模型时的外观。在Blender中,我们可以设置Bloom(柔光)。我尝试使用react-three-fiber来绘制3D模型时,看是否能够反映出这种柔光效果。

    react-three-fiber

 

◆ 3D模型绘制完成图像

image.png

准备3D模型(在Blender中)

moon_and_star2.png
image.png

假设/假定/条件/基础

在本文所述的环境中绘制3D模型。本文的环境与此处相同。

 

◆ 环境

    • Blender:3.4

 

    • Typescript:4.9.5

 

    • React:18.2.0

 

    • React-three-drei:9.88.11

 

    React-three-fiber:8.15.9

以三维模型进行绘画

以下是App.tsx的完整代码。除了在这篇文章中描述的App.tsx中的3D模型显示之外,本文的App.tsx还添加了有关Bloom效果的描述。

import { Canvas } from '@react-three/fiber'
import { OrbitControls, useGLTF } from '@react-three/drei'
import { Bloom, EffectComposer } from '@react-three/postprocessing';

function Model() {
  const { scene } = useGLTF("assets/moon_and_star.glb")
  return <primitive object={scene} />
}

export default function App() {

  return (
    <>
      <Canvas camera={{ position: [2, 1, 2], near: 0.05 }}
        style={{ background: "#001122" }}>
        {/* 3Dモデルの表示 */}
        <group>
          <Model />
        </group>
        {/* 自動横回転 */}
        <OrbitControls autoRotate />
        {/* ライト */}
        <directionalLight position={[5, 5, 5]} castShadow />
        {/* ブルームのエフェクト */}
        <EffectComposer>
          <Bloom />
        </EffectComposer>
      </Canvas>
    </>
  )
}

◆ 详细说明:如何增加闪耀感(光晕效果)

通过使用react-postprocessing中的EffectComposer和Bloom,可以实现类似Blender中发光效果的物体显示。如下所示,在EffectComposer中添加了Bloom的设置。

{/* ブルームのエフェクト */}
<EffectComposer>
  <Bloom />
</EffectComposer>

◆ 绘图结果

尽管在Blender中的外观有些不同,但通过使用泛光效果,我们成功绘制了具有发光感的3D模型。

image.png

为了比较,我们将比较一下如果不包括布卢姆特效(~)部分和包括该部分,在网站上的显示效果。

image.png

请看以下内容

    • https://docs.pmnd.rs/react-postprocessing/effects/bloom

 

    • https://docs.pmnd.rs/react-postprocessing/effect-composer

 

    • https://github.com/pmndrs/react-postprocessing

 

    https://threejs.org/docs/#examples/en/postprocessing/EffectComposer
广告
将在 10 秒后关闭
bannerAds