前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >three.js 背景模糊的另类实现方法

three.js 背景模糊的另类实现方法

原创
作者头像
webvrmodel模型网
发布2022-05-05 13:41:18
3K0
发布2022-05-05 13:41:18
举报
文章被收录于专栏:gltf模型

gltf,glb模型下载网站

我们有时候做项目时候会想让背景和模型完全独立分开,分别控制亮度,模糊度等,笔者提供一种方法可以很好的实现,以下只写关键代码,首先在网页加入两个容器

代码语言:javascript
复制
<div id="pos" style="background: transparent;width: 890px;height: 590px;float: right;position: absolute;left:190px;right:0;top:0;bottom:0;z-index:2"></div>
<div id="pos2" style="filter: blur(0);width: 890px;height: 590px;float: right;position: absolute;left:190px;right:0;top:0;bottom:0;z-index:1"></div>
代码语言:javascript
复制
然后在js文件写上加载gltf的代码,
var camera, scene,scene2,renderer,renderer2,camera2,controls,controls2;//注意这里摄像机,控制器,场景,渲染器都是2套,其中一套是前景模型,一套是背景hdr图片
renderer=new THREE.WebGLRenderer( { antialias: true, alpha: true , logarithmicDepthBuffer: true   } );
renderer2=new THREE.WebGLRenderer( { antialias: true, alpha: true , logarithmicDepthBuffer: true   } );
    camera = new THREE.PerspectiveCamera( camerafov, 89 /59,0.001, 600000 );
    camera2 = new THREE.PerspectiveCamera( camerafov, 89 /59,0.001, 600000 );
    scene = new THREE.Scene();
    scene2 = new THREE.Scene();

    controls = new OrbitControls( camera, renderer.domElement );
    controls2 = new OrbitControls( camera2, renderer2.domElement );

以下gltf加载器代码省略,官方文档都可以查到的,
把glt加入  scene.add( gltf.scene );
然后加入天空球到scene2
    let texture1=new THREE.TextureLoader().load('图片路径');
                let sphere4=new THREE.SphereBufferGeometry(10000,30,30);
                sphere4.scale(-1,1,1);
                let material1=new THREE.MeshBasicMaterial({map:texture1});
                let sphere5=new THREE.Mesh(sphere4,material1);
               scene2.add(sphere5);
然后需要注意的是把渲染器分别加入容器pos和pos2,
    document.getElementById('pos').appendChild( renderer.domElement );

    document.getElementById('pos2').appendChild( renderer2.domElement );
我们可以通过更改pos2容器的模糊度和亮度等来单独控制背景层
最后在function animate() {

    
        renderer2.render(scene,camer);//执行渲染操作

        renderer2.render(scene2,camera2);//执行渲染操作}
我们可以通过以下代码改变pos2的模糊度
 document.getElementById("pos2").style.filter='blur('+虚化值变量+'px'+')';
改变亮度
  renderer2.toneMappingExposure =数值变量;

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
容器服务
腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档