深入理解three.js对svg的支持(三):svg转three对象

前言:SVG作为一种优秀的矢量图形格式在Web得到广泛应用,three.js作为知名的WebGL库自然也对其提供了支持。然而,官方文档中对此的说明十分单薄,网上与此相关的资源也不多。经过多次试验之后,在此分享我的一点理解,包括SVGLoader,SVGObject,SVGRenderer,svg和THREE对象的互相转化等内容。

3 svg图像转为THREE对象

难道就没有办法实现如引擎般顺滑地操作svg元素了么!查找和学习相关资源的时间都够自己写出来了——不,作为一个坚定的伸手党,不要退缩,手套会掉,坚决不自己写!我们要注重路上的风景!(一口齁咸的鸡汤下肚)

第一部分中,载入的svg终究是svg文件,如果能够转为THREE的原生对象该多好啊,任何熟悉的THREE操作都可以用上了。在上一部分中我们见识到了SVGRenderer三维对象转svg的功能,本部分要做的事与它恰恰相反:将svg转为THREE.Shape对象。

3.1 svg到THREE形状

果然有人实现了这个功能1,《ThreeJS开发指南》这本书里也提到过这个,网上也有个人将之进行改进做了案例2,但案例的展示效果太烂,不仔细啥也看不见……

最原始的当然是1中的代码,作者自己写了一个svg到THREE.Shape,进而通过extrude拉伸成体的功能。不过这个代码已经非常obselete,用的很多THREE的API都过时了,但还是值得一看,只是作者实在是……所有的东西全都写得耦合到一起了。

这里写图片描述

为了更加方便操作,我们当然希望能够输入svg的path,输出THREE.Shape。于是需要对其进行修改(解码相关代码没有修改,不再赘述,有兴趣的阅读d3-threeD源码):

function d3threeD(exports) {
   
    ...

    exports.transformSVGPath =
    function transformSVGPath
  • 3
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值