【问题标题】:Three.js antialiasing, box geometry still very unsharpThree.js 抗锯齿,盒子几何还是很不清晰
【发布时间】:2019-02-04 03:19:41
【问题描述】:

我正在尝试用three.js 中的boxgeometries 创建一个简单的3d 游戏。 一切正常,但无论是在移动浏览器(safari)还是在我的 macbook 上的 chrome 上,我都没有在这些盒子上得到锋利的边缘。请参阅下面的屏幕截图。

到目前为止我尝试了什么:将渲染器上的抗锯齿设置为 true(有帮助,但仍然没有来自旋转立方体的直线),设置渲染器像素比(触摸点击相交不起作用,并且仍然像素化线。)还尝试了 FXAA 着色器但结果并不好。 使用透视相机,Boxgeometry with Basic Material。

我的问题是,使用 three.js 是否有可能在这些立方体上有锋利的边缘?尤其是当它们非常小的时候(比如在移动屏幕上大小相等的 30)。

使用 three.js 版本 87、chrome 68、最新的移动 safari。

更新:这是我的渲染器设置:

renderer = new THREE.WebGLRenderer({
alpha: true,
antialias: true
   });
  renderer.setSize(window.innerWidth, window.innerHeight);
 renderer.setPixelRatio(window.devicePixelRatio); // doesnt do the trick and messes up the threex domevent touch inputs
  document.body.appendChild(renderer.domElement);


  canvas = document.getElementsByTagName('canvas')[0];
  window.onresize = resizeCanvas;
  resizeCanvas();

  function resizeCanvas() {
    canvas.style.width = '100%';
    canvas.style.height = '100%';

canvas.width = canvas.offsetWidth;
canvas.height = canvas.offsetHeight;

camera.aspect = window.innerWidth / window.innerHeight;
camera.updateProjectionMatrix();
  }

在我的 CSS 中,我只有 canvas { height: 100%;宽度:100%; }

update2:这里是演示链接https://jsfiddle.net/roxanfc4/11/

【问题讨论】:

  • 你能分享一个演示吗?官方的three.js 示例在您的设备上看起来是否清晰?在 three.js 中获得干净的边缘当然是可能的,但是如果没有关于您的特定场景的一些信息,很难猜测为什么它在您的情况下不起作用。
  • 看起来抗锯齿正在发生,但随后您的画布通过 CSS 放大了。你是否碰巧有任何 CSS 规则,如 transform: scale(2.0); 或类似的东西应用于你的画布、div、页面等?

标签: three.js antialiasing


【解决方案1】:

不知何故,这个 sn-p 做到了,现在边缘明显更柔和了:

renderer.setPixelRatio(window.devicePixelRatio * 1.5);

【讨论】:

  • 我很确定这是一种依赖于浏览器而不是 three.js 的抗锯齿的 hack,但它节省了我的时间,我不必包含/编写抗锯齿着色器。我希望这个 hack 将继续跨设备工作
  • 另外,我认为锯齿线问题主要发生在设备像素比为 1 的设备上。也许最好执行if(window.devicePixelRatio<2){ renderer.setPixelRatio(window.devicePixelRatio * 2); } 之类的操作,以确保生成的像素比是不是太高了?不管怎样,我找到了这个线程discourse.threejs.org/t/prevent-canvas-graining/11621/4,但是你没有对这个问题有更多的了解
猜你喜欢
  • 1970-01-01
  • 2021-10-05
  • 1970-01-01
  • 2014-02-18
  • 2016-09-30
  • 2013-06-17
  • 2011-08-14
  • 2014-01-21
  • 1970-01-01
相关资源
最近更新 更多