zoomdog2019中国?让你成为灵魂画手的

老铁们,大家好,相信还有很多朋友对于zoomdog2019中国和让你成为灵魂画手的的相关问题不太懂,没关系,今天就由我来为大家分享分享zoomdog2019中国以及让你成为灵魂画手的的问题,文章篇幅可能偏长,希望可以帮助到大家,下面一起来看看吧!

本文作者:HelloGitHub-kalifun

今天给大家推荐一个使用JavaScript语言编写的开源Web3D模型项目——Zdog。

一、介绍

1.1Zdog

Zdog项目地址:https://github.com/metafizzy/zdog

Tips:本文出现的所有作品都是通过Zdog完成的。

圆形、扁平、设计师友好用于canvas和SVG的伪3D引擎。

使用Zdog您可以在Web上设计和渲染简单的3D模型。Zdog是一个伪3D引擎。它的几何形状存在于3D空间中,但呈现为扁平形状,这使Zdog特别。

1.2Zdog特点

体积小:整个库只有2100行代码,最小体积为28KB。图形圆滑:所有的圆形都呈现为圆边,没有多边形锯齿。使用友好:使用API完成建模。

二、方法介绍

解释说明均在代码中以注释方式展示,请大家注意阅读。

2.1初始静态演示

让我们进入一个基本的非动画演示。

静态演示只需要在画布上将想要绘画的图像渲染出来就可以了。

//Illustration是顶级类,用于处理<canvas>或<svg>元素,保存场景中的所有形状,并在元素中显示这些形状。nletillo=newZdog.Illustration({n//用class选择器设置画布nelement:'.zdog-canvas',n});n?n//画圆nnewZdog.Ellipse({n//将形状添加到illonaddTo:illo,n//设置圆的直径ndiameter:80,n//设置画笔宽度nstroke:20,n//设置圆的颜色ncolor:'#636',n});n?n//更新所有显示属性并渲染到illo画布上nillo.updateRenderGraph();n

2.2动画

为实现动画场景,我们需要每帧重新渲染图形在画布上。

letillo=newZdog.Illustration({n//用id选择器设置画布nelement:'#zdog-canvas',n});n?n//画圆nnewZdog.Ellipse({naddTo:illo,ndiameter:80,n//你可以理解z轴向前移动40个像素ntranslate:{z:40},nstroke:20,ncolor:'#636',n});n?n//画矩形nnewZdog.Rect({naddTo:newcanvas,nwidth:80,nheight:80,n//你可以理解z轴向后移动40个像素ntranslate:{z:-40},nstroke:12,ncolor:'#E62',nfill:true,n});n?nfunctionanimate(){n//通过逐步增加xxx.rotate.y来改变场景的旋转。值越大越快。nillo.rotate.y+=0.03;nillo.updateRenderGraph();n//动画下一帧继续执行函数nrequestAnimationFrame(animate);n}n//开始动画,执行函数nanimate();n

2.3放大

Zdog需要设置大量数字。设置zoom将按比例缩放整个场景。

//Illustration是顶级类,用于处理<canvas>或<svg>元素,保存场景中的所有形状,并在元素中显示这些形状。nletillo2=newZdog.Illustration({n//用class选择器设置画布nelement:'.zdog-canvas2',n//将图形放大4倍nzoom:4,n});n//画圆nnewZdog.Ellipse({n//将形状添加到illo2naddTo:illo2,n//设置圆的直径ndiameter:80,n//设置画笔宽度nstroke:20,n//设置圆的颜色ncolor:'#636',n});n?n//更新所有显示属性并渲染到illo画布上nillo2.updateRenderGraph();n

2.4拖动旋转

通过在插图上设置dragRotate:true来拖动来启用旋转。

letnewcanvas2=newZdog.Illustration({n//用id选择器设置画布nelement:'#zdog-canvas2',ndragRotate:true,n});n?n//画圆nnewZdog.Ellipse({naddTo:newcanvas2,ndiameter:80,n//你可以理解z轴向前移动40个像素ntranslate:{z:40},nstroke:20,ncolor:'#636',n});n?n//画矩形nnewZdog.Rect({naddTo:newcanvas2,nwidth:80,nheight:80,n//你可以理解z轴向后移动40个像素ntranslate:{z:-40},nstroke:12,ncolor:'#E62',nfill:true,n});n?nfunctionanimate2(){n//通过逐步增加xxx.rotate.y来改变场景的旋转。值越大越快。nnewcanvas2.rotate.y+=0.03;nnewcanvas2.updateRenderGraph();n//动画下一帧继续执行函数nrequestAnimationFrame(animate2);n}n//开始动画,执行函数nanimate2();n

三、快速入手

下面我们将一步步的讲解如何使用Zdog这个库。我们采用的是最简单的CDN引用方式,方便大家能够快速体检其魅力(复制代码便可查看效果)。

Tips:解释说明均在代码中以注释方式展示,请大家注意阅读。

<!DOCTYPEhtml>n<htmllang="en">n<head>n<metacharset="UTF-8">n<title>zdog</title>n<styletype="text/css">n.zdog-canvas{n/*给class="zdog-canvas"的画布添加背景*/nbackground:#FDB;n}n</style>n</head>n<body>n<!--Zdog在<canvas>或<svg>元素上呈现。-->n<!--设置画布1,及长宽-->n<canvasclass="zdog-canvas"width="240"height="240"></canvas>n<!--设置画布2,及长宽-->n<canvasid="zdog-canvas"width="240"height="240"></canvas>n<!--引入zdog文件-->n<scriptsrc="https://unpkg.com/zdog@1/dist/zdog.dist.min.js"></script>n<script>n//Illustration是顶级类,用于处理<canvas>或<svg>元素,保存场景中的所有形状,并在元素中显示这些形状。nletillo=newZdog.Illustration({n//用class选择器设置画布nelement:'.zdog-canvas',n});n?n//画圆nnewZdog.Ellipse({n//将形状添加到illonaddTo:illo,n//设置圆的直径ndiameter:80,n//设置画笔宽度nstroke:20,n//设置圆的颜色ncolor:'#636',n});n?n//更新所有显示属性并渲染到illo画布上nillo.updateRenderGraph();n?n?nletnewcanvas=newZdog.Illustration({n//用id选择器设置画布nelement:'#zdog-canvas',n});n?n//画圆nnewZdog.Ellipse({naddTo:newcanvas,ndiameter:80,n//你可以理解z轴向前移动40个像素ntranslate:{z:40},nstroke:20,ncolor:'#636',n});n?n//画矩形nnewZdog.Rect({naddTo:newcanvas,nwidth:80,nheight:80,n//你可以理解z轴向后移动40个像素ntranslate:{z:-40},nstroke:12,ncolor:'#E62',nfill:true,n});n?nfunctionanimate(){n//通过逐步增加xxx.rotate.y来改变场景的旋转。值越大越快。nnewcanvas.rotate.y+=0.03;nnewcanvas.updateRenderGraph();n//动画下一帧继续执行函数nrequestAnimationFrame(animate);n}n//开始动画,执行函数nanimate();n</script>n</body>n</html>n

第一个画布是初始静态演示,第二个画布是动画,第三个画布是由第一个画布放大,第四个画布是通过拖动实现不规则旋转

四、总结

Zdog可以设计和显示简单的3D模型而不需要很多开销。这让我们成为一个灵魂画手简单了很多,如果你想给自己的网站增添色彩,不妨试试Zdog吧。如果各位感兴趣的话,下一期我将带领大家成为一位代码上的灵魂画手!

五、参考资料

Zdog官方文档[1]

References

[1]Zdog官方文档:https://zzz.dog/

『讲解开源项目系列』——让对开源项目感兴趣的人不再畏惧、让开源项目的发起者不再孤单。跟着我们的文章,你会发现编程的乐趣、使用和发现参与开源项目如此简单。欢迎留言联系、加入我们,让更多人爱上开源、贡献开源~

OK,本文到此结束,希望对大家有所帮助。