web3d-three.js场景设计器-天空包围盒-TWEEN.js

THREE.JS 实现场景天空包围盒,为了让场景背景更具体,而不是呆板的纯色,可以给厂家添加围绕的包围盒。

  • 这里使用球体来实现,球体中央则是场景
  • 给球体添加天空的渐变色
  • 加入场景

代码如下

function createSky( hemiLight) {

  const vertexShader = `varying vec3 vWorldPosition;

    void main() {

        vec4 worldPosition = modelMatrix * vec4( position, 1.0 );

        vWorldPosition = worldPosition.xyz;

        gl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );

    }`

  const fragmentShader = `uniform vec3 topColor;

    uniform vec3 bottomColor;

    uniform float offset;

    uniform float exponent;

    varying vec3 vWorldPosition;

    void main() {

        float h = normalize( vWorldPosition + offset ).y;

        // 从-0.2 到1做渐变

        h = smoothstep(-0.4, 1.0, h);  

        gl_FragColor = vec4( mix( bottomColor, topColor, max( pow( max( h , 0.0), exponent ), 0.0 ) ), 1.0 );

    }`

  const uniforms = {

    'topColor': { value: new THREE.Color(0x0077ff) },

    'bottomColor': { value: new THREE.Color(0xeeeeee) },

    'offset': { value: 30 },

    'exponent': { value: 0.6 }

  }

  uniforms['topColor'].value.copy(hemiLight.color)

  // scene.fog.color.copy( uniforms[ 'bottomColor' ].value );

  const skyGeo = new THREE.SphereGeometry(4000, 32, 15)

  const skyMat = new THREE.ShaderMaterial({

    uniforms: uniforms,

    vertexShader: vertexShader,

    fragmentShader: fragmentShader,

    side: THREE.BackSide

  })

  const sky = new THREE.Mesh(skyGeo, skyMat)

  return sky

}

相关推荐

  1. Unity3D 立方体纹理与自制天空详解

    2024-01-23 11:16:01       39 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-01-23 11:16:01       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-01-23 11:16:01       101 阅读
  3. 在Django里面运行非项目文件

    2024-01-23 11:16:01       82 阅读
  4. Python语言-面向对象

    2024-01-23 11:16:01       91 阅读

热门阅读

  1. spring boot kafka 发送消息 完整的例子工程

    2024-01-23 11:16:01       60 阅读
  2. 【SpringBoot3】Spring Boot 3.0 集成 Mybatis Plus

    2024-01-23 11:16:01       49 阅读
  3. [Python进阶] 正则表达式常见语法

    2024-01-23 11:16:01       49 阅读
  4. Fizz Buzz

    Fizz Buzz

    2024-01-23 11:16:01      60 阅读
  5. 算法训练营Day43(动态规划5)

    2024-01-23 11:16:01       65 阅读
  6. yolov8改进之FasterBlock

    2024-01-23 11:16:01       54 阅读
  7. 香橙派5 RK3588使用RTL8188FTV USB无线网卡

    2024-01-23 11:16:01       57 阅读
  8. 【Unity】RayMarching体积云理论学习

    2024-01-23 11:16:01       56 阅读
  9. 什么是DDoS

    2024-01-23 11:16:01       44 阅读
  10. LeetCode59 螺旋矩阵 II

    2024-01-23 11:16:01       51 阅读