首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >THREE.js使用背景材料

问THREE.js使用背景材料
EN

Stack Overflow用户
提问于 2014-06-16 12:50:59
回答 2查看 476关注 0票数 0

我的目标是将3D物体组合到全景图上。我已经把物体放进去了,用正确的角度把它们排列得很好。我需要的是一种实现useBackground着色器的方法,您可以在软件中看到,比如Maya和Max到three.js。

更清楚的是,我想把阴影投射到我创建的代理平台上。地面不应该是可见的,但上投下的阴影应该是可见的。如果你能帮我或者引导我走向正确的方向。我是否需要创建一个自定义着色器,还是已经有一种方式只渲染阴影上的对象。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-07-07 11:29:43

好的,我从互联网上找到了解决方案:P.我必须创建一个着色器,其中我的shadowColor从GL_FragColor的阿尔法中减去

这是片段着色器的代码。您可以使用BasicMaterial中的顶点着色器。

代码语言:javascript
复制
planeFragmentShader = [

            "uniform vec3 diffuse;",
            "uniform float opacity;",

            THREE.ShaderChunk["color_pars_fragment"],
            THREE.ShaderChunk["map_pars_fragment"],
            THREE.ShaderChunk["lightmap_pars_fragment"],
            THREE.ShaderChunk["envmap_pars_fragment"],
            THREE.ShaderChunk["fog_pars_fragment"],
            THREE.ShaderChunk["shadowmap_pars_fragment"],
            THREE.ShaderChunk["specularmap_pars_fragment"],

            "void main() {",

            "gl_FragColor = vec4( 1.0, 1.0, 1.0, 1.0 );",

            THREE.ShaderChunk["map_fragment"],
            THREE.ShaderChunk["alphatest_fragment"],
            THREE.ShaderChunk["specularmap_fragment"],
            THREE.ShaderChunk["lightmap_fragment"],
            THREE.ShaderChunk["color_fragment"],
            THREE.ShaderChunk["envmap_fragment"],
            THREE.ShaderChunk["shadowmap_fragment"],
            THREE.ShaderChunk["linear_to_gamma_fragment"],
            THREE.ShaderChunk["fog_fragment"],

            "gl_FragColor = vec4( 0.0, 0.0, 0.0, 1.0 - shadowColor.x );",

            "}"
        ].join("\n")
票数 0
EN

Stack Overflow用户

发布于 2014-06-16 13:07:45

three.js皮肤示例使用这样的阴影。确保对象的castShadow属性设置为true,并且灯在正确的位置。morph.html

代码语言:javascript
复制
// GROUND

var groundMaterial = new THREE.MeshPhongMaterial( { emissive: 0xbbbbbb } );
var planeGeometry = new THREE.PlaneGeometry( 16000, 16000 );

var ground = new THREE.Mesh( planeGeometry, groundMaterial );
ground.position.set( 0, FLOOR, 0 );
ground.rotation.x = -Math.PI/2;
scene.add( ground );

ground.receiveShadow = true;
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24244171

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档