很高兴拥有的装载机列表:
[ ] X3DLoader
[x] DDSLoader
[ ] TIFF 加载器
[x] SVG 加载器
非常广泛的清单!
我还建议使用 AMF(http://en.wikipedia.org/wiki/Additive_Manufacturing_File_Format)加载器。
(用于 3d 打印的 3d 文件格式)。
我已经完成了加载器的基础知识,所以我可以对其进行一些修改并添加到示例中。
这些加载器中的大多数对于编辑器等特殊情况更为重要,因为对于游戏来说,最好直接转换为 three.js 格式,对吧? 在这些情况下,转换器/出口商更为重要。
我们已经测试了 glTF 作为三种格式的替代作为优化 - 那里的数据是二进制的,可以使用 geom 压缩进行压缩。
Herst [email protected] kirjoitti 2014 年 10 月 28 日凯洛下午 5:38:
这些加载器中的大多数对于编辑器等特殊情况更为重要,因为对于游戏来说,最好直接转换为 three.js 格式,对吧? 在这些情况下,转换器/出口商更为重要。
—
直接回复此邮件或在 GitHub 上查看。
@kaosat-dev 已添加到列表中!
@Herst是的。 它主要用于不需要快速加载时间的编辑器或应用程序。
我也在寻找 IGES 装载机。 我什至可能会开始自己建造一个,但不知道从哪里开始。
将3DM (由Rhinoceros使用)添加到列表中怎么样?
@nyaaao补充道。 谢谢!
关于 3DS 加载器:
大家好,很久以前,我需要为 3DzzD Web 3D 引擎制作一个 3DS 加载器,这有点难做……不难获得一些初步结果,而是要正确处理所有块,但经过一段时间我设法生产了一个非常高效的装载机。 3DS 文件格式规范很难找到,但我找到了一个运行良好的文件。 我已经使用此文档为 3DzzD 构建了加载器,它比当前 Photoshop 中的加载器效果更好(更好地处理枢轴/平滑组/缩放/关键帧/等...),所以这是我使用的规范(3DzzD 源代码是开源的,可能会有所帮助,但代码真的很难看……一个十年前的项目……)
http://dzzd.net/3DShunkDefinitions.html
关于 OBJ 加载器:
我修改了当前的 OBJ 加载器,并在许多 3d 模型上获得了至少 10/15 FPS,但现在我没有找到如何发布这些更改?
问题主要是因为当前的 OBJ 加载器创建了太多的对象(比原来的 3d 模型多,每次材质更改创建一个对象),并且具有相同材质的 3dFaces 即使在同一个对象内也没有分组在一起,并且产生了太多的 WebGL 调用
谢谢! 添加到第一个帖子。
问题主要是因为当前的 OBJ 加载器创建了太多的对象(比原来的 3d 模型多,每次材质更改创建一个对象),并且具有相同材质的 3dFaces 即使在同一个对象内也没有分组在一起,并且产生了太多的 WebGL 调用
哦! 有趣的。 你的意思是OBJMTLLoader
一个。 对?
哦! 有趣的。 您的意思是 OBJMTLLoader 之一。 对?
是的,更准确地说,“if (/^usemtl /.test(line))”块为每个材质开关创建一个新的对象/网格,这最终会导致性能不佳和对象层次结构错误。
我将发布一个简单的测试用例,显示当前加载器和修改后的加载器之间的差异(差异主要在移动设备上很明显)
这是当前加载程序的测试用例和优化的测试用例:
http://demo.dzzd.fr/threejs/OBJMTLLoaderTest/
编辑:
我在 GalaxyTab3 上使用当前加载程序获得了 10 FPS,使用新加载程序获得了超过 60 FPS,在快速设备上可能很难看到差异
PS:如果您想知道3D 模型来自哪里 :)
有谁知道IGES。 我真的可以使用 IGES 加载器。 如果有人能指出我开始如何构建一个方向? 或者,如果在某个地方有一个。 我注意到http://www.3dfile.io/和其他一些 3D 可视化网站正在使用 ThreeJS 并允许上传 IGES。
K3D.js(MIT 许可证)具有 OBJ、3DS、MD2 和 Collada 的解析器。 http://k3d.ivank.net。 参见#3843。
医生的 NIfTI 怎么样?
@jugl你有关于格式的任何信息吗?
我真的希望.m2 模型,它是一个巨大的社区。 我会为模型文件等提供帮助。您可以在 Skype 上与我联系:deexone。 作为来自一位 lib 开发人员的提示http://bridge.net/可能用于将他的 lib 转换为 js。
嘿,我有一个 BVH 加载程序,它解析一个 BVH 文件并输出一个 THREE.Skeleton 和 AnimationClip,以便与混音器一起使用:
https://github.com/herzig/BVHImporter
和工作示例: http ://herzig.github.io/BVHImporter/
它主要在 CMU BVH 文件和其他一些文件上进行测试。
关于加载程序 API 的外观是否有任何指导方针?
@herzig甜! BVHLoader
会很棒! 装载机基本上有.load()
和.parse()
。 您可以使用MD2Loader作为参考,但如果您使用现有的 PR 进行 PR,我会很乐意清理您的代码(示例 + 示例动画也将非常感谢)。
你好呀,
只是为了将此列表与 repo 中的文件加载器同步...
列表中缺少 3MFLoader,但已实现。
列表中缺少 BinaryLoader,但已实现。
列表中缺少 DDSLoader,但已实现。
FBXLoader 未选中但已实现。
列表中缺少 HDRCubeTextureLoader,但已实现。
MD2Loader 未选中但已实现。
NRRDLoader 未选中但已实现。
列表中缺少 PCDLLoader,但已实现。
列表中缺少 PlayCanvasLoader,但已实现。
列表中缺少 RGBLLoader,但已实现。
SVGLoader 未选中但已实现。
列表中缺少 TGALoader,但已实现。
列表中缺少 TTFLoader,但已实现。
下一个:
应该将 ASCLoader 添加到列表中,并且 PR 将在几天内发送。
应将 LASLoader 添加到列表中,PR 将在几天内发送。
XYZLoader 应该被添加到列表中,并且 PR 将在几天内发送。
最好的祝福,
特里斯坦
只是为了将此列表与 repo 中的文件加载器同步...
更新!
OpenCTM 可能是一个很好的补充,因为 Autodesk 正在将它用于他们的
云服务
https://en.m.wikipedia.org/wiki/OpenCTM
在 2016 年 11 月 13 日星期日上午 6:33,Mr.doob [email protected]写道:
只是为了将此列表与 repo 中的文件加载器同步...
更新!
—
您收到此消息是因为您订阅了此线程。
直接回复此邮件,在 GitHub 上查看
https://github.com/mrdoob/three.js/issues/5524#issuecomment -260168120,
或使线程静音
https://github.com/notifications/unsubscribe-auth/AAkmxkkOn179ZJvqc8yScOoxnaDGzuH6ks5q9qE6gaJpZM4CzpFw
.
@dlabz我们确实有一个CTMLoader
。
我正在与 AR 领域的一些 iOS 开发人员合作,是否有 Apple 在 ARKit 中使用的二进制 SCN 文件的加载程序? 我正在努力使用 BinaryLoader,我们会看看我是否可以让它工作。
该SCN
格式是否有规范?
@mrdoob对不起,我来晚了。 NIfTI 是从 DICOM 传输的 NMR 数据格式。 我目前的解决方案是从中获取 3D 形状作为 VTK/OBJ 格式。
我知道了。 某处有规范吗?
IFC 装载机怎么样。 这种格式在其 3d 模型的构造中使用非常普遍
@mrdoob非常感谢。
@mrdoob构建 three.js 加载器的准则 + 知识先决条件是什么?
我想建造一个,但它想确保以正确的方式建造它。 谢谢
@Aarbel你想为什么格式构建一个加载器?
@looeee .ifc 文件
加载程序的基本结构如下所示:
import {
FileLoader,
Loader,
LoaderUtils
} from '../../../build/three.module.js';
function IFCLoader( manager ) {
Loader.call( this, manager );
}
IFCLoader.prototype = Object.assign( Object.create( Loader.prototype ), {
constructor: IFCLoader,
load: function ( url, onLoad, onProgress, onError ) {
var scope = this;
var path = ( this.path !== undefined ) ? this.path : LoaderUtils.extractUrlBase( url );
var loader = new FileLoader( scope.manager );
loader.load( url, function ( text ) {
try {
scope.parse( text, path, onLoad, onError );
} catch ( e ) {
if ( onError !== undefined ) {
onError( e );
} else {
throw e;
}
}
}, onProgress, onError );
},
parse: function ( text, path, onLoad, onError ) {
// parsing logic goes here
}
} );
谢谢,下个月继续努力
祝你好运! 😊
默认crossOrigin
应该是Anonymous
吗?
我重用了GLTFLoader
和ColladaLoader
的模式。
我想看看 LWO 装载机。
文件规范在这里有很好的记录:http: //static.lightwave3d.com/sdk/2018/html/filefmts/lwo3.html
我经常看到 LWO 文件大小约为 OBJ 的 1/10,并且该格式可以包含变形数据和许多其他 OBJ 不允许的功能。 NASA 提供的许多模型也只有 LWO 格式https://nasa3d.arc.nasa.gov/search/lwo/model
如果我知道我在做什么,我会尝试让它滚动,但是写一个加载器超出了我以前做过的任何事情。
FWIW 这里有一个 LWO 解析器: https ://github.com/marcbizal/lwo-parser ...假设这对于加载器或转换器来说是一个好的开始,但不幸的是它似乎不支持特定版本NASA 使用的 LWO 格式。 它需要 LWOB(二进制?),但我尝试的 NASA 模型上的魔术版本字符串是 LWO2。 如果您确实找到了用 JS 以外的其他语言编写的有效解析器,那么编写一个转换为 three.js 支持的东西可能会更容易,而不是尝试用 JS 编写一个新的解析器。
嗨,我的日程安排发生了很大变化,所以没有时间为 three.js 处理 .ifc 加载程序。 获取这个人的联系方式可能会很棒: https ://github.com/mrdoob/three.js/issues/9764
对不起,我没有意识到
我正在制作“LWO 2”的装载机。 但是,我认为没有需求,我没有完成它。
http://adrs2002.com/sandbox/lwoLoader/lwoTest.html
https://github.com/adrs2002/threeLwoLoader
我希望它会对某些事情有所帮助。
大家好,
我看到 M2 在列表中。
这对我来说很有趣,因为我想用 Three 实现一个角色、对象、NPC 和项目查看器。
与 M2 相关的是同义词 BLP2(暴雪图片文件),类似于使用的 DDS S3 纹理压缩。
到目前为止我发现:
.m2 = https://github.com/vjeux/jsWoWModelViewer
.blp
我自己尝试添加它,但我对整个过程仍然有点缺乏经验:D
@adrs2002 LWOLoader
会很棒! 你想用你拥有的东西做公关吗?
我自己尝试添加它,但我对整个过程仍然有点缺乏经验:D
慢慢来👌
LWOLoader 会很棒!
几个月前,我在 onthez.com 工作时编写了一个 LWO3 加载程序。
我们同意了一段时间的排他性,然后我们将在这里做出贡献。 希望在2月底左右的某个时候。
我认为@jds580s是来自 z 的 Justin,也许他可以更好地了解我们何时可以在此处添加它。
@mrdoob @looeee
如果 looeee 的LWO3 loader
将提交,我认为LWO2 loader
的提交是不必要的。
LWO3 格式是因为它包含了 LWO2 格式的所有成功。
LWOLoader 登陆了! 😁
IFC 加载程序有任何更新吗? 对于建筑景观会很好!
我尝试了一个 IFCLoader 以及怎么说......这是不可能的! 能够正确解析 IFC 格式所需的整个代码大约是 650 个类文件。 (我知道是因为我做到了)。 加载器将比 Threejs 库大 5 倍。
关于规范,如果你想实现自己的: http ://standards.buildingsmart.org/IFC/RELEASE/IFC4_1/FINAL/HTML/
我可以发布我的代码,一些帮助会很酷。 但是不希望在不久之前在 ThreeJs 中看到这个加载器......
我可以发布我的代码,一些帮助会很酷。 但是不希望在不久之前在 ThreeJs 中看到这个加载器......
为什么不?
顺便说一句:我最近与一位同事交谈,他告诉我 IFC 是基于 CAD 社区众所周知的 STEP 格式。 一般来说,STEP 真的很难解析,你需要编写一个类似于VRMLLoader
的自定义解析器。 但是,IFC 文件也可以用 XML 表示(它们具有.ifcxml
扩展名)。 这样的文件会更容易处理(参见3MFLoader
或ColladaLoader
),因此加载器可以专注于实际的几何数据构建。 也许创建一个一开始只支持.ifcxml
的加载器更容易?
@ mrdoob , @Mugen87
为什么不?
因为
加载器将比 Threejs 库大 5 倍。
我使用具有最新 javascript 功能的Class
。
IFC 基于 CAD 社区众所周知的 STEP 格式。
是的,有一天我会告诉你我在用 Threejs 做什么;)
IFC 文件也可以用 XML 表示(它们具有 .ifcxml 扩展名)。
...
也许创建一个一开始只支持 .ifcxml 的加载器更容易?
解析显然不是什么大问题。 但是几何代是! 因为 ifc 格式不包含任何几何图形。 但是使用对象之间的插值/交互来确定最终的几何形状。
无论如何,如果你想要它,也许你应该在做出任何决定之前为此创建一个特定的分支。 只是为了看大事。
加载器将比 Threejs 库大 5 倍。
是的,如果加载器不像其他加载器那么紧凑,最好将代码放入单独的存储库中。
@Itee 有计划很快发布 IFCLOADER 吗?
有兴趣看看大事
不知道有人愿意贡献它并维护它......
我正在愉快地使用 IfcOpenShell 的 IFC 转换器,它可以制作漂亮的几何图形和材料,可以做 Collada DAE(我们用来导入 Unity),IIRC OBJ,现在也有 glTF
我正在愉快地使用 IfcOpenShell 的 IFC 转换器,它可以制作漂亮的几何图形和材料,可以做 Collada DAE(我们用来导入 Unity),IIRC OBJ,现在也有 glTF
但是您是否使用任何 IFC 数据,例如 Buildingstorey、Site 等?
毫无疑问,Web 最好能够解析 IFC,而不是每个人都在处理的这种糟糕的客户端-服务器。
我最近试了一下。 我设法生成了一些几何图形
但实际上应该是这样的:
出错的基本问题是这里的实际放置和旋转,而我的 3D 数学几乎不存在(我根本没有耐心)。
尽管 IFC 模式中有许多类。 最终的文件大小可以通过使用 Typescript 接口和使用函数来查找和应用文件中每个“STEP”的参数来减小。
底线,对于 IFC 装载机; 我不知道我们是否有一个 3D 数学天才,因为这将解决许多在构造几何时解析数学关系的问题。
但是您是否使用任何 IFC 数据,例如 Buildingstorey、Site 等?
是的,通过 Tridify 的转换服务,它也使用 IfcOpenShell(我也在本地使用它)作为 geom。 我认为这些元数据很容易解析。
几何生成确实不平凡。 如果您想在浏览器中执行此操作,也许您可以将 IfcOpenShell 编译为 WebAssembly 并将其用作 Javascript 中的库。 它是纯 C++,没有 GUI 或任何东西,只是一个单独有命令行界面的库,所以它也可能很容易为 web 构建。 解析 IFC 有点繁重,因此获得 WASM 性能和低内存占用可能会很好。 lib 在创建 geom 方面做得很好。
@MaartenBreeedveld我可以帮助数学,因为我毫无疑问的理论基础并且我对ifc有一些经验,实际上世界坐标可能需要几个系列转换。 对于three.js中的实现,也许可以对其进行优化。
但是您是否使用任何 IFC 数据,例如 Buildingstorey、Site 等?
是的,通过 Tridify 的转换服务,它也使用 IfcOpenShell(我也在本地使用它)作为 geom。 我认为这些元数据很容易解析。
几何生成确实不平凡。 如果您想在浏览器中执行此操作,也许您可以将 IfcOpenShell 编译为 WebAssembly 并将其用作 Javascript 中的库。 它是纯 C++,没有 GUI 或任何东西,只是一个单独有命令行界面的库,所以它也可能很容易为 web 构建。 解析 IFC 有点繁重,因此获得 WASM 性能和低内存占用可能会很好。 lib 在创建 geom 方面做得很好。
我们过去曾尝试过。 但是 WASM 编译的版本是 40MB 下载我猜这是由于 ifcConvert 中所有引用的库。
@Jesusbill ,太棒了! 目前,我没有时间从事这个项目。 但如果没事的话,我会回来找你的。
惊人的! 目前,我没有时间从事这个项目。 但如果没事的话,我会回来找你的。
听起来不错@MaartenBreeedveld
将VDBLoader
添加到列表中。 https://www.openvdb.org/
关于 IFCLOADER 的任何想法? @mrdoob
不
关于 3dm 加载器:由于 emscripten ( rhino3dm ),openNURBS 库已编译为 wasm,我已经开始着手这方面的工作。
我正在这里处理这个问题,并且已经启动和工作了网格、breps、挤压、点云、材料、图层和组支持。
相关文件:
我希望在某个时候_很快_提交一个支持更多对象类型的 PR。 我必须承认,我对 web worker 的经验很少,并且依赖于draco和basic loader 示例。 希望#18234 能稍微简化一下。
ps 我们已经在 rhino3dm.js 库中直接添加了 threejs 支持,就像这里和这里一样。
编辑:更新指向 McNeel org fork 的链接。
我们可以检查一下这个;)
最有用的评论
关于 3dm 加载器:由于 emscripten ( rhino3dm ),openNURBS 库已编译为 wasm,我已经开始着手这方面的工作。
我正在这里处理这个问题,并且已经启动和工作了网格、breps、挤压、点云、材料、图层和组支持。
相关文件:
我希望在某个时候_很快_提交一个支持更多对象类型的 PR。 我必须承认,我对 web worker 的经验很少,并且依赖于draco和basic loader 示例。 希望#18234 能稍微简化一下。
ps 我们已经在 rhino3dm.js 库中直接添加了 threejs 支持,就像这里和这里一样。
编辑:更新指向 McNeel org fork 的链接。