无法让 Three.js EffectComposer 工作

2023-11-29

我想开始使用 EffectComposer 对渲染进行一些后处理,但我无法获得渲染到屏幕的最基本设置。它只是保持空白。我一定是在看什么东西。有人有想法吗?

<!doctype html>
<html>
  <head>
    <title>game</title>
    <style type="text/css">
      html, body {        
        margin: 0px;
        width: 100%;
        height: 100%;
      }

      canvas {
        display: block;
      }
    </style>    
  </head>
  <body>
    <canvas id="viewport"></canvas>
    <script type="text/javascript" src="three.js"></script>
    <script type="text/javascript" src="CopyShader.js"></script>
    <script type="text/javascript" src="ShaderPass.js"></script>
    <script type="text/javascript" src="EffectComposer.js"></script>
    <script type="text/javascript" src="RenderPass.js"></script>
    <script type="text/javascript" src="MaskPass.js"></script>
    <script type="text/javascript">
      var width = document.body.clientWidth;
      var height = document.body.clientHeight;      
      var canvas = document.querySelector('#viewport');
      var renderer = new THREE.WebGLRenderer({canvas: canvas});
      renderer.setSize(width, height);

      var scene = new THREE.Scene();

      var cube = new THREE.Mesh(
        new THREE.CubeGeometry(30, 30, 30), 
        new THREE.MeshPhongMaterial({color: 0xFF0000}));
      scene.add(cube);

      var camera = new THREE.PerspectiveCamera(45, width / height, 0.1, 1000);
      camera.position = new THREE.Vector3(60, 60, 60);
      camera.lookAt(cube.position);
      camera.updateMatrix();
      scene.add(camera);      

      var pointLight = new THREE.PointLight(0xFFFFFF);
      pointLight.position = new THREE.Vector3(100, 80, 20);
      scene.add(pointLight);

      var renderPass = new THREE.RenderPass(scene, camera);
      renderPass.renderToScreen = true;      
      var composer = new THREE.EffectComposer(renderer);
      composer.addPass(renderPass);
      renderer.clear();
      composer.render();

      //renderer.render(scene, camera);
    </script>
  </body>
</html>

如果我取消注释最后一行,我会在屏幕上看到一些内容。


首先,EffectComposer不是库的一部分——它是示例的一部分。所以官方不支持。

所以,是的,你必须“知道它在幕后是如何工作的”。

您可以通过添加额外的内容来解决您的问题CopyPass像这样:

var renderPass = new THREE.RenderPass( scene, camera );

var copyPass = new THREE.ShaderPass( THREE.CopyShader );
copyPass.renderToScreen = true;

var composer = new THREE.EffectComposer( renderer );
composer.addPass( renderPass );
composer.addPass( copyPass );

composer.render( 0.05 );
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

无法让 Three.js EffectComposer 工作 的相关文章

随机推荐

  • 使用 Julia 和 gurobi 进行二次约束 MIQP

    这是试图回答以下问题 https matheducators stackexchange com questions 11757 small data sets with integral sample standard deviation
  • 函数参数传递和返回

    var foo bar function return this baz baz 1 function return typeof arguments 0 foo bar 为什么这段代码会返回undefined 我会假设arguments
  • 如何将 MOVE 用于以记录为元素且其上有动态数组字段的动态数组?

    我正在使用 Delphi Rio 我的程序有很多动态数组操作 为了提高一些长数组复制的速度 我尝试使用 Move 对于基本类型 实数 整数 的一维动态数组 我可以管理 Move 的使用 但对于以记录作为其元素的动态数组 并且该记录具有另一个
  • Python根据条件分割字符串

    如果逗号前面有某个正则表达式 我想使用逗号分隔符分割字符串 考虑我的字符串格式如下的情况 一堆可能有逗号的东西 FOO REGEX 其他可能有逗号的东西 FOO REGEX 我想用逗号分割字符串 但前提是它们前面有 FOO REGEX 一堆
  • 使用 ContentFlow (coverflow) 显示数据库图像 IllegalStateException 错误

    我目前正在使用第三方图像 coverflow http www jacksasylum eu ContentFlow 来显示保存在数据库中的图像 为此 我使用 Java JPA 和 Richfaces 我已经设置了一个图像 servlet
  • 添加 Excel 格式的最有效方法 - VBA

    我有一个宏 可以将数百行数据添加到 Excel 电子表格中 我从插入每行数据的循环中调用一个过程 每次插入该数据时 我都会应用该行的格式 然而 在测试过程中 我发现当我不逐行应用格式而是一次全部应用格式时 插入所有数据的速度可以快大约 3
  • 在Python OpenCV中访问IP摄像头

    如何访问我的网络摄像机流 显示标准网络摄像头流的代码是 import cv2 import numpy as np cap cv2 VideoCapture 0 while True ret frame cap read cv2 imsho
  • 当具体类包含其他接口时如何反序列化接口集合

    我目前面临的情况是 我得到了一个无法修改的 json 文件 并且我希望生成的反序列化类对于设计目的是通用的 首先是我的界面 public interface IJobModel string ClientBaseURL get set st
  • Git 合并混乱。 diff 显示差异,merge 表示没有差异

    我开始学习使用git 我遇到了一个我不明白的情况 存储库被从svn中取出 我在树枝上jacob 379尽一切努力 host git status On branch jacob 379 nothing to commit working d
  • 如何将“expo-splash-screen”与“expo-google-fonts”一起使用?

    初始屏幕使用异步操作等待 而字体包使用 自定义挂钩 useFonts 我猜 如何让启动屏幕等待谷歌字体加载 您可以使用以下方式加载字体loadAsync from expo fonts 并管理启动画面expo splash screen i
  • Drupal 7 术语路径在哪里?

    使用 Drupal 6 中的 pathauto 和 token 模块 您可以使用如下模式创建 url 别名 termpath raw title raw 然而 Drupal 7 中的情况并非如此 我知道 D7 仍处于 alpha 阶段 但
  • Junit @Rule 如何工作?

    我想为大量代码编写测试用例 我想了解JUnit的详细信息 Rule注释功能 以便我可以使用它来编写测试用例 请提供一些好的答案或链接 通过一个简单的示例详细描述其功能 规则用于添加适用于测试类中的所有测试的附加功能 但以更通用的方式 例如
  • 无法解析 XML blob

    我在对 azure 上的 dbs 进行身份验证时遇到问题 所有详细信息都是正确的 但是当我单击 连接 时 出现以下错误 TITLE Microsoft SQL Server Management Studio Error connectin
  • 单行检查列表中至少一项是否存在于另一个列表中? [复制]

    这个问题在这里已经有答案了 假设我有一个清单a 1 2 3 我想知道其中至少有一个数字是否存在于另一个列表中 如下所示 b 4 5 6 7 8 1 换句话说 我想知道列表中是否存在 1 2 或 3b 我现在可以做类似的事情 def func
  • 如何用Python实现一个最小的AJAX服务器?

    我想为 Python 程序创建一个非常简单的基于 HTML AJAX 的 GUI 所以前端是一个 HTML 页面 通过 AJAX 与程序进行通信 你能给我一个使用 python 的服务器端的最小实现吗SimpleHTTPServer Sim
  • 旋转 UIImage 并移动

    我已经搜索了堆栈溢出太多次 也发布了一个问题 但没有成功 我需要在我的拼贴应用程序中实现一个功能 用户可以旋转 uiimage 并将其作为旋转图像移动 知道如何做吗 如果需要 我会尝试所有这些 最近两天寻找它感到沮丧 首先 我使用 CGAf
  • 如何获取前台窗口的exe路径

    我想获取活动前台窗口的可执行文件的路径 我已经有了前台窗口的处理程序 DllImport user32 dll static extern IntPtr GetForegroundWindow IntPtr handlerAppActual
  • 使用 .setPaint(gradient) 调整大小时不重新绘制

    一旦我在代码中使用渐变 在调整大小时重新绘制就不会完成 我在调整大小时会得到类似的结果 已调整大小的黑色矩形 请参阅下面链接中的图像 当我停止调整大小时 所有内容都会再次绘制 但只有那时 如果我不使用g2d setPaint gradien
  • 如何安排从 BigQuery 表导出到 Cloud Storage?

    我已在 BigQuery 中成功安排查询 并将结果保存为数据集中的表 我看到很多关于安排数据传输的信息in到 BigQuery 或 Cloud Storage 但我没有找到任何有关安排导出的信息from尚未将 BigQuery 表传输到 C
  • 无法让 Three.js EffectComposer 工作

    我想开始使用 EffectComposer 对渲染进行一些后处理 但我无法获得渲染到屏幕的最基本设置 它只是保持空白 我一定是在看什么东西 有人有想法吗