2013-02-14 52 views
3

我想在three.js webgl画布上(使用线框材质)显示2D矢量地图。 地图最初来自dwg格式,将被转换为svg。SVG矢量图像Three.js形状?

但没有找到任何SVG导入器three.js。

有没有svg加载器/导入器? 或其他一些显示矢量地图的方法?

(我试图将其转换为一个网格在3ds Max,并出口到OBJ, 但它失去了一些非闭合路径和一些物品得到三角面, 这does not看起来线框材料好)

理想情况下,地图将被导入/转换为形状并可在此处查看(中间图层为“纯形状”,无额外顶点等) http://mrdoob.github.com/three.js/examples/webgl_geometry_shapes.html

谢谢!

回答

1

尝试使用“SVGLoader”(http://threejs.org/docs/#Reference/Loaders/SVGLoader),你需要添加一个功能,因为它不是在three.js所R71,所以,在这里它是“https://github.com/mrdoob/three.js/blob/master/examples/js/loaders/SVGLoader.js

+1

谢谢,看起来像一个很好的解决方案 – AdvancedTech 2015-07-20 07:51:21

+6

嗨,你能解释这是如何完全实现的吗?该文档说svg将作为SVGDocument加载。这将如何被转换成三维形状? – 2015-09-01 18:44:24

-1

如果您将SVG带入您的网页(可能是隐藏的DIV?),您应该能够查询DOM中的所有组件。然后画出你认为合适的three.js项目。

+0

没有找到其他合适的解决方案,所以做了一个小的SVG装载机/解析(从文件加载)与JavaScript然后从那里建立线条/元素。 – AdvancedTech 2013-02-22 08:42:20

+0

是的,正好 - 它可以让您生成适合您的特定用例的WebGL元素。 – bjorke 2013-02-26 00:37:17

0

有两种方式:

  1. 使用https://github.com/mattdesl/svg-mesh-3d/
  2. Blender使用

与SVG目-3D的问题是,它不会为你做的挤压,以及everythi ng必须被编程。这就是为什么搅拌机是更好的方法。如果您了解Blender,则可以将SVG导入其中,然后在几分钟内挤出并导出为JSON格式。稍后,您将使用加载器将JSON加载到您的动画中。如果你不知道搅拌机,这里是如何做到这一点:

https://www.youtube.com/watch?v=rDjhO7r3agc&t=225s

https://www.jonathan-petitcolas.com/2015/07/27/importing-blender-modelized-mesh-in-threejs.html