社区首页 >问答首页 >在将MeshStandardMaterial复制到ShaderMaterial中时,如何呈现PMREM环境映射

在将MeshStandardMaterial复制到ShaderMaterial中时,如何呈现PMREM环境映射
EN

Stack Overflow用户
提问于 2019-12-09 22:27:30
回答 1查看 173关注 0票数 1

我正在尝试使用ShaderMaterial来构建MeshStandardMaterial。我保留了大部分#include <logic>语句,这使得放置断点有点困难。

我想知道是否有一种直接的方法来渲染PMREM立方图,在这个特定的材料模板中,并让它以应该显示的方式显示出来。

我大致使用:

代码语言:javascript
代码运行次数:0
复制
material.defines.USE_ENVMAP = ''
material.defines.ENVMAP_MODE_REFLECTION = ''
material.defines.ENVMAP_TYPE_CUBE_UV = ''
material.defines.ENVMAP_BLENDING_MULTIPLY = ''
material.defines.TEXTURE_LOD_EXT = ''
material.defines.USE_UV = ''
material.extensions.derivatives = true
material.extensions.shaderTextureLOD = true

据我所知,这是向material.envmap添加纹理时出现的所有定义。着色器编译,正在生成PMREM纹理,并且可以在着色器中读取(例如,gl_FragColor = vec4( texture2D( envmap, vUv ).xyz, 1.)工作)。这些是我克隆的制服:

代码语言:javascript
代码运行次数:0
复制
{
    envmap: UniformsUtils.clone(UniformsLib.envmap),
    fog: UniformsUtils.clone(UniformsLib.fog),
    lights: UniformsUtils.clone(UniformsLib.lights),
    displacementmap: UniformsUtils.clone(UniformsLib.displacementmap)
}

当使用MeshStandardMaterial时,maxMipmap制服的值似乎为0,我不确定还使用了什么。

我在material.uniforms.envmap.value中放置纹理并使用这些定义完全没有效果。如果我在场景中关闭灯光,我的对象渲染为黑色,没有反射。

这看起来不需要那么多的输入,但我得到了0。不是这样的:

代码语言:javascript
代码运行次数:0
复制
    radiance += getLightProbeIndirectRadiance( /*specularLightProbe,*/ geometry.viewDir, geometry.normal, material.specularRoughness, maxMipLevel );
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-12-10 04:36:32

对我来说,那是一件丢失的制服:

https://github.com/mrdoob/three.js/blob/dev/src/renderers/shaders/ShaderLib.js#L99

代码语言:javascript
代码运行次数:0
复制
envMapIntensity: { value: 1 } // temporary

它不是envmap的一部分。

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

https://stackoverflow.com/questions/59257581

复制
相关文章
HDFS——如何将文件复制到HDFS
在Hadoop中用作文件操作的主类位于org.apache.hadoop.fs包中。基本的文件操作有open、read、write和close。实际上,Hadoop的文件API是通用的,可用于HDFS以外的文件系统。
星哥玩云
2022/06/30
2K0
three.js 材质
今天郭先生说一说three.js的材质。材质描述了对象objects的外观。它们的定义方式与渲染器无关, 因此,如果您决定使用不同的渲染器,不必重写材质。
郭先生的博客
2020/08/28
10K0
问与答118:如何使用VBA将多个工作表数据复制到PPT中?
遍历每个工作表,如果工作表的单元格S1中的值为“1”,则将该工作表的“Print_Area”(打印区域)复制并粘贴到一张空白幻灯片中。
fanjy
2021/05/07
5.1K1
HDFS——如何将文件从HDFS复制到本地
复制文件到本地文件系统。可用-ignorecrc选项复制CRC校验失败的文件。使用-crc选项复制文件以及CRC信息。
星哥玩云
2022/06/30
6.9K0
企业价值观在ERP中以何种方式呈现?
提供自定义平台,将业务功能模块化、接口标准化(SOA架构设计)。用户可以灵活的按自己需求,编排组合自己的业务流程,从而达到优化现有流程。
明象ERP
2019/03/01
8470
将文件内容复制到另外文件
在示例类Demo.FileDemo中,ProcessFile()方法接受输入文件和输出文件,并调用SetUpInputFile()和SetUpOutputFile()打开文件,一个用于读取,另一个用于写入。然后,它逐行读取输入文件,并调用ProcessLine()对每行的内容执行一个或多个替换,将每行的新内容写入输出文件。
用户7741497
2022/07/06
9900
vue中如何将 json 格式化展示在页面中?
在 vue 中,如果想在页面中展示格式化后的 json 数据,首先需要先将 json 字符串转化为 json 对象,而后通过 pre 标签 插值即可展示。代码示例如下:
蓓蕾心晴
2023/02/17
6.2K0
vue中如何将 json 格式化展示在页面中?
在idea中如何将jar包导入项目中
小尘要自信
2023/10/10
1K0
在idea中如何将jar包导入项目中
js将内容复制到剪贴板
在js中通过点击事件来触发复制到剪贴板,通过js的document.execCommand("Copy");语法可以实现复制功能,但是首先需要将文本选中,来看一下实际代码:
OECOM
2020/07/01
4K0
Oracle将远程库复制到本地库
exp username/password@192.168.1.1:1521/orcl file=C:/database.dmp
在下是首席架构师
2022/08/18
1.1K0
如何在PPT中呈现高大上的数据仪表盘
在上数据化薪酬建模与分析课程的时候,我们会对薪酬建立数据仪表盘,通过数据仪表盘的形式来对薪酬的关键指标进行数据的交互,来进行数据分析,很多同学在完成了薪酬的数据仪表盘后都会提出一个问题,就是我们做的数据仪表盘能不能在PPT中呈现进行数据的交互,因为我们在很多时候在做工作汇报的时候都是以PPT的形式来呈现的。
王佩军
2022/04/06
2.2K0
如何在PPT中呈现高大上的数据仪表盘
在Bash中如何将字符串转换为小写
其中 "^" 运算符将匹配模式的小写字母转换为大写;"," 运算符将匹配的大写字母转换为小写。"^^" 和 ",," 扩展将转换扩展值中的每个匹配字符;"^" 和 "," 扩展仅匹配并转换扩展值中的第一个字符。
程序熵
2023/10/16
2340
在Bash中如何将字符串转换为小写
手把手教你如何将学校饭卡复制到小米手环NFC版上
NFC是Near Field Communication缩写,即近距离无线通讯技术。由飞利浦公司和索尼公司共同开发的NFC是一种非接触式识别和互联技术,可以在移动设备、消费类电子产品、PC和智能控件工具间进行近距离无线通信。NFC功能提供了一种简单、触控式的解决方案,可以让消费者简单直观地交换信息、访问内容与服务。
FB客服
2020/03/03
13.3K0
将本地文件复制到Hadoop文件系统
//将本地文件复制到复制到Hadoop文件系统 //目前,其他Hadoop文件系统写入文件时均不调用progress()方法。 package com;
星哥玩云
2022/07/04
1.4K0
问与答87: 如何根据列表内容在文件夹中查找图片并复制到另一个文件夹中?
Q:如何实现根据列表内容查找文件夹中的照片,并将照片剪切或复制到另外的文件夹?如下图1所示,在列C中有一系列身份证号。
fanjy
2020/09/25
2.9K0
问与答87: 如何根据列表内容在文件夹中查找图片并复制到另一个文件夹中?
Jira Epic在完成状态时,如何让Epic在Scrum面板待办事项中不显示?
遇到的问题:Epic在完成状态时,仍旧在Scrum面板待办事项中显示,需要手动将其【标记完成】 而想要的效果是:Epic到完成状态时,Epic自动标记完成
donghui
2019/04/19
2.8K0
Jira Epic在完成状态时,如何让Epic在Scrum面板待办事项中不显示?
在Python3中unescape 将J
首先上下比较发现,js中escape后的字符串与Unicode编码很相似 %u4eba%u751f%u82e6%u77ed \u4eba\u751f\u82e6\u77ed 所以得出以下解决方法,可以将js中escape后的字符串转成utf-8 import urllib.parse escape_str = '%u4eba%u751f%u82e6%u77ed' str1 = escape_str.replace('%u', '\\u') # 得到结果 str1 = '\u4eba\u751f
py3study
2020/01/13
1.2K0
在制作跨平台的 NuGet 工具包时,如何将工具(exe/dll)的所有依赖一并放入包中
2018-07-03 13:30
walterlv
2018/09/18
2.8K0
点击加载更多

相似问题

在meshStandardMaterial中模糊光反射

128

纹理使用meshStandardMaterial three.js呈现不正确

12

如何通过环境映射?

23

使用MeshStandardMaterial控制折射

113

在MeshStandardMaterial中添加ID颜色映射

18
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档