- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
对于 Three.js 的 R76 和 R77 中的 svg 文件,以下内容对我来说效果很好,但在 R78 中,我只能让它与 png 和 jpg 一起使用
var floor = new THREE.TextureLoader();
floor.load('layout.svg', function ( texture ) {
var geometry = new THREE.PlaneBufferGeometry(4096, 4096);
var material = new THREE.MeshBasicMaterial( { map: texture } );
var mesh = new THREE.Mesh(geometry, material);
mesh.rotation.x = -Math.PI / 2;
scene.add(mesh);
} );
既然问题出现了,我就在加载参数中添加了进度和错误函数...
function ( xhr ) {
console.log( (xhr.loaded / xhr.total * 100) + '% loaded' );
},
function ( xhr ) {
console.log( 'An error happened' );
}
...这告诉我在 r78 中,svg 已 100% 加载,但它没有出现在场景中。我应该补充一点,我还将它与 phongmaterial 一起用于反射属性,并使用透明度来显示显然漂浮在天空图中的 svg 元素,非常有趣。我的问题是,我怎样才能让它发挥作用?
在 R77 中,svg 将映射到 FF 或 chrome 中的 planeBufferGeometry。
在 R78 中它不会加载,Firebug 上没有显示错误。
更新
我研究了 SVGLoader.js、SVGRenderer.js(还需要 Projector.js)。呈现面向相机的 svg 文件,响应平移,但不响应旋转;即不可能有透视图。我在 svg 文件中添加了一个 xml header ,然后是一个 doctype,但是 threejs 显然不会因为它们的缺失而烦恼。使用 localhost 在 FF 中没有区别,在 Chrome 中是必需的
所以问题似乎出在 TextureLoader 或 WebGLRenderer 上,它们在 R78 中都进行了相当大的改组。
我还简要地尝试了 dev 版本,它的作用与 r78 相同。
谁能建议我从这里去哪里?我不确定是提交错误还是“功能恢复”。 Here's想要的效果。
最佳答案
现在我的理解是,在 R78 之前,svg 在渲染之前会在内部转换为光栅图像。
要继续在 R78 及 Textureloader 中使用 svg 图像,请事先将它们转换为 png。
或者如果 svg 始终面向相机,请使用 THREE.SVGLoader .
或者如果在 three.js 场景中需要单独的 svg 元素,将它们转换为路径并使用 this example制作 2d 形状或 3d 挤压形状。
我在这里学到的教训是不要仅仅依靠示例来工作。我应该深入挖掘,破坏事物,并与issues保持同步。在 Github 上。
并使用多个浏览器;当时,Chrome 正在经历一个与此并非完全无关的错误阶段。
关于javascript - three.js:使用 textureloader 加载 svg 从 r78 开始不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38174693/
我有这门课 #ifndef WRAPPED_TEXTURE_H #define WRAPPED_TEXTURE_H #include #include "../ui/utils/texture.h"
我正在尝试向我转换为 json 并从 3ds Max 导入的模型添加纹理。我进行了搜索,但没有在网上找到任何使用 three.js r53 将纹理应用于 json 模型的代码。我猜 Three.js
我正在学习 threejs,我希望我的立方体每一面都有 6 种不同的纹理。我确实用 loadTexture 做到了这一点 var material3 = new THREE.MeshPhongMate
我正在尝试一个全景查看器代码,它的three.js 版本是r68,我将three.js 版本更新为r121 以使用raycaster 功能。 当我修改代码时会出现问题: var texture = T
我在 Three.js 中使用纹理加载器,其中的 onLoad 函数不起作用,在控制台中出现错误 var TextureLoader = new THREE.TextureLoader(); boxt
如何使用 Three.js 中的新 THREE.TextureLoader 加载多个纹理? 目前我正在像这样加载我的纹理: var texture1 = THREE.ImageUtils.load
我正在使用 THREE.TextureLoader 更新 a-image scr let loader = new THREE.TextureLoader() const imgload = load
使用 Three.js,我为网站制作了一个 3D 地球仪。 要在该地球上加载纹理,我使用以下代码: var loader = new THREE.TextureLoader(); loader.loa
我正在使用 R73 版。我目前的任务是用 Material 填充阵列。该数组的内容应该稍后使用。该用法取决于我完全加载的所有 Material 。 现在我循环遍历一个 JSON 信息数组并为每个元素调
我希望我的 TextureLoader 使用 header 授权来加载纹理: let loader = new THREE.TextureLoader(); loader.headers = { .
在另一篇文章中,我在加载纹理时遇到了一些问题,正如所讨论的 here 。现在,我已根据那里提供的链接以及 documentation 采纳了建议。 ,我想出了这个解决方案。 var loader =
我想问你是否知道如何使用 THREE.TextureLoader() 重复纹理。我找到了仅适用于使用 THREE.ImageUtils.loadTexture() 的解决方案。这是我的部分代码: va
我正在使用此函数在圆柱体上添加纹理。 function createElementMaterial() { THREE.ImageUtils.crossOrigin = ''; var
在 Mac OS X El Capitan OpenGL 版本 4.1 上,我的 LWJGL 3.0 应用程序在调用 Slick2D 时挂起函数 TextureLoader.getTexture()
我一直在尝试将 three.js 添加到 React 项目中,并且大部分都成功了。但是,我无法弄清楚为什么我的纹理图像没有加载。我正在运行我自己的本地服务器,添加了一个在加载完成时运行的回调方法,并尝
对于 Three.js 的 R76 和 R77 中的 svg 文件,以下内容对我来说效果很好,但在 R78 中,我只能让它与 png 和 jpg 一起使用 var floor = new TH
我是一名优秀的程序员,十分优秀!