关于three.js渲染器THREE.WebGLRenderer()参数的介绍和使用

首先来看下THREE.WebGLRenderer可以设置的参数如下:

var renderer = new THREE.WebGLRenderer({ //创建渲染器对象
    // canvas: document.getElementById('can3d'), //渲染器绘制其输出的画布,
    alpha: false, // 画布是否包含alpha(透明度)缓冲区。默认值为false。
    premultipliedAlpha: true, //渲染器是否会假设颜色具有 预乘alpha。默认为true。
    antialias: true, //是否执行抗锯齿。默认值为false。
    preserveDrawingBuffer: true, //是否保留缓冲区直到手动清除或覆盖。默认值为false。
    depth: true, //绘图缓冲区是否具有至少16位的 深度缓冲区。默认为true。
    autoClear: true, //定义渲染器是否应在渲染帧之前自动清除其输出。
    //以上为基础配置选项。
    //以下为高级进阶调渲染后期
    gammaFactor: 0.5, //伽马基础值
    gammaInput: true, //如果设置,那么它期望所有纹理和颜色都是预乘伽马。默认值为false。
    gammaOutput: true, //如果设置,那么它期望所有纹理和颜色需要以预乘伽马输出。默认值为false。
    shadowMap: null, //如果使用,它包含阴影贴图的引用。
    physicalCorrectLights: true, //是否使用物理上正确的照明模式。默认值为false。
    toneMapping: 0.5, //曝光值
    toneMappingExposure: 1, //色调映射的曝光级别。默认值为1。
    renderLists: [], //在内部用于处理场景对象渲染的排序
    sortObjects: true //定义渲染器是否应对对象进行排序。默认为true。
})

遇到的问题:加载完模型,效果看起来太白了,在设置模型渲染的曝光值toneMapping时不起作用
在这里插入图片描述
在查阅许多资料后都没能有效的解决此问题,于是就在不经意间发现一个ReinhardToneMapping属性,巧妙地利用编辑工具代码提示的功能有效的解决的问题。
在这里插入图片描述
设置模型的曝光值需要这样写:

renderer.toneMapping = THREE.ReinhardToneMapping //曝光值 默认为2 值为整型 [1 - 2]

如果需要调整曝光值可以这样写:

THREE.ReinhardToneMapping = 1
renderer.toneMapping = THREE.ReinhardToneMapping

代码:

var container = document.getElementById('threed') //获取渲染容器
var renderer = new THREE.WebGLRenderer({ antialias: true }) //创建渲染器对象
renderer.domElement.id = 'can3d'
renderer.setSize(width, height) //渲染大小
renderer.toneMapping = THREE.ReinhardToneMapping //曝光值
container.appendChild(renderer.domElement) //将模型添加到指定容器内

调整后的效果,高亮的地方是暗下来了,但整个模型也暗了,这时调整模型的灯光、环境光就可以了,好吧!效果看起来依然很丑,但是 是有效果的,需要自己根据需求慢慢调试。
在这里插入图片描述

  • 5
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
使用three.js加载.obj和.mtl文件可以通过以下步骤完成: 1. 首先,你需要引入three.js库文件,通过在HTML页面中添加如下代码来导入库文件: ``` <script src="https://cdnjs.cloudflare.com/ajax/libs/three.js/110/three.min.js"></script> ``` 2. 创建一个用于显示3D模型的容器,可以是一个div元素或者canvas元素。例如: ``` <div id="canvas"></div> ``` 3. 在Javascript代码中,创建一个场景(scene)、摄像机(camera)和渲染器(renderer): ``` var scene = new THREE.Scene(); var camera = new THREE.PerspectiveCamera(75, window.innerWidth / window.innerHeight, 0.1, 1000); var renderer = new THREE.WebGLRenderer(); renderer.setSize(window.innerWidth, window.innerHeight); document.getElementById("canvas").appendChild(renderer.domElement); ``` 4. 使用OBJLoader加载.obj文件和MTLLoader加载.mtl文件。确保将路径指定为正确的模型文件路径。例如: ``` var objLoader = new THREE.OBJLoader(); var mtlLoader = new THREE.MTLLoader(); mtlLoader.load('model.mtl', function (materials) { materials.preload(); objLoader.setMaterials(materials); objLoader.load('model.obj', function (object) { scene.add(object); }); }); ``` 5. 设置摄像机的位置以及添加光源: ``` camera.position.z = 5; var light = new THREE.PointLight(0xFFFFFF, 1, 100); light.position.set(10, 10, 10); scene.add(light); ``` 6. 创建一个渲染函数,以及在每帧更新场景的方法: ``` function render() { requestAnimationFrame(render); renderer.render(scene, camera); } render(); ``` 以上代码可以让你使用three.js加载.obj和.mtl文件,并在页面上显示出3D模型。尽量准备好正确路径下的.obj和.mtl文件以及相关的纹理文件。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值