【问题标题】:is it possible to convert SVGPath to Mesh in javafx是否可以在 javafx 中将 SVGPath 转换为 Mesh
【发布时间】:2017-03-23 00:39:25
【问题描述】:

我正在尝试使用 javafx 将 .svg 文件转换为 3d(.obj 文件)。

我可以将形状 - 圆柱体、长方体等基元转换为网格。是否可以将 SVGPath 转换为任何特定的 Mesh。

【问题讨论】:

    标签: svg javafx mesh .obj svg-path


    【解决方案1】:

    开源库FXyz 正是您要找的:SVG3DMesh 类给出 2D SVGPath(或带有其内容的字符串)将返回 3D TriangleMesh,将 2D 形状拉伸为一定的高度。

    稍后您可以将该网格导出到 obj 文件。

    这是如何使用它的代码 sn-p:

    SVG3DMesh svg3DMesh = new SVG3DMesh("M40,60 C42,48 44,30 25,32", 10);
    

    你可以显示网格:

    svg3DMesh.setDrawMode(DrawMode.LINE);
    svg3DMesh.setCullFace(CullFace.NONE);
    

    或者用你想要的颜色显示一个实体 3D 对象:

    svg3DMesh.setTextureModeNone(Color.RED);
    

    用于将网格导出到 obj:

    OBJWriter writer=new OBJWriter((TriangleMesh) ((TexturedMesh) svg3DMesh.getMeshFromLetter("")).getMesh(), "svg");
    writer.setMaterialColor(Color.RED);
    writer.exportMesh();
    

    它会生成 svg.obj 和 svg.mtl。

    【讨论】:

    • Pereda,非常感谢您的 cmets。这将真正帮助我理解转换背后的过程。
    • @José 是否也可以通过这种方式创建平面(非挤压)网格?
    • @mipa 是的,确实,这是生成 3D 网格的第一部分:2D 闭合路径使用 Poly2Tri 生成 2D 网格。您需要添加一些 API 才能使该网格脱离 SVG3DMesh...
    • @José 在您没有明确指定高度的情况下,或者如果由于向后兼容性问题而无法做到这一点,如果您指定负高度,这难道不是一个合理的默认行为吗?
    • @mipa 它是一个 3D 库...所以它生成完整的 3D 对象。但它也可以扩展为返回 2D 网格,它只需要 API 在生成后获取它们。
    猜你喜欢
    • 2018-06-24
    • 2011-05-21
    • 2012-03-26
    • 2020-09-06
    • 2018-11-21
    • 2010-09-28
    • 1970-01-01
    • 2021-10-28
    相关资源
    最近更新 更多