javascript - 如何使用三个js创建柔光

标签 javascript three.js

我是三个 js 的新手,我正在尝试使用 AmbientLight 和 DirectionalLight 为 gltf 模型创建柔和的照明,但颜色对比度太尖锐

我想要实现的目标

我得到了什么

我的代码

const main = document.querySelector('#main');
let WIDTH = main.offsetWidth;
let HEIGHT = main.offsetHeight;


let scene = new THREE.Scene();
let camera = new THREE.PerspectiveCamera(15, WIDTH / HEIGHT, 0.1, 1000);
camera.position.z = 5; 

let renderer = new THREE.WebGLRenderer();
renderer.setClearColor('rgb(99, 115, 107)');
renderer.setSize(WIDTH, HEIGHT);

renderer.domElement.setAttribute("id", "Church3DObj");
main.insertBefore(renderer.domElement, main.firstChild);

let controls = new THREE.OrbitControls(camera, renderer.domElement);
const ambientLight = new THREE.AmbientLight('white', 1);

  const mainLight = new THREE.DirectionalLight('white', .8);
  mainLight.position.set(10, 10, 10);
scene.add(ambientLight)
scene.add(mainLight)

let loader = new THREE.GLTFLoader();
let obj = null;

loader.load('https://raw.githubusercontent.com/aaadraniki/projects/web-pages/assets/models/fender_br/scene.gltf', function(gltf) {
  obj = gltf.scene;
  scene.add(obj);
});

renderer.setAnimationLoop(_ => {
  renderer.render(scene, camera);
})

最佳答案

您通常可以通过使用某种环境贴图在 Three.js 中获得最佳光照。 THREE.RoomEnvironment是更简单的方法之一,或者您可以加载外部 .hdr 或 .exr 文件。启用一些色调映射(例如 ACES Filmic)也可能有所帮助,请参阅 renderer.toneMapping .

关于javascript - 如何使用三个js创建柔光,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/73258752/

相关文章:

javascript - Socket.IO 的 once 函数无法正常工作

javascript - 无法在 Meteor 中构造 $pop 查询时使用变量

Javascript 奇怪地滞后于在 map 中查找 key

javascript - JS/jQuery - 在单个事件处理程序上使用全局事件处理程序

javascript - 在 Colab 中嵌入 Three.js

javascript - Iframe 滚动溢出隐藏在 css 中不起作用

javascript - 在 Blender 导入的网格中获取颜色以使用 Three.js 显示的问题

javascript - Three.js - 如何预先定位要合并的对象?

javascript - Three.js 中的体素化 — 来自纹理的粒子 Material

javascript - 轨迹球控件从何而来?