龙空技术网

pyray库:python的一个2D和3D动画库介绍、自己修改代码

易三一世 1070

前言:

而今看官们对“python哪个版本支持ryu”大概比较着重,各位老铁们都需要知道一些“python哪个版本支持ryu”的相关资讯。那么小编也在网上网罗了一些有关“python哪个版本支持ryu””的相关知识,希望咱们能喜欢,我们一起来了解一下吧!

1 说明:

=====

锻炼自己python思维,修改小神开源的代码,做自己的大神。

通俗易懂,一秒入门。

1.1 pyray库:

1.1.1 python的一个2D和3D动画库,创建于2018年1月。

1.1.2 目前只支持python2,基本不支持python3。

1.1.3 而且是仅仅支持window操作系统。

1.1.4 是不是很小众,而且最近基本没有升级的。

======一次锻炼自己python思维的好机会=====

跟我来!!

1.2 环境:

华为笔记本电脑,深度deepin-linux操作系统,python3.8,微软vscode编辑器,谷歌浏览器。

有人会说:我是window操作系统,不用看了。其实不对,思维在那里呀,一起来。

2 安装:

======

pip install raypy#sudo pip3.8 install raypy  #本机安装,请注意是raypy,不是pyray,一看就是小神制作的代码,没事#  #附上github地址,去下载源码看看。#注意后面对源码进行修改是pip安装的地址,因人而异,别搞错了
#警告WARNING: The script isympy is installed in '/usr/local/python3.8/bin' which is not on PATH.  Consider adding this directory to PATH or, if you prefer to suppress this warning, use --no-warn-script-location.#没关系,因为没有建立软连接#那就建立软连接sudo ln -s /usr/local/python3.8/bin/isympy /usr/bin/isympy

===以下都是修改后的代码和效果,思路、分析和注释都有====

3 转动的球:

3.1 代码:

from pyray.shapes.sphere import *#在img66文件夹生成名字为im0~im65的png图片draw_wavy_sphere_wrapper('/home/xgj/Desktop/pyray/img66/im', 66, 1)#自己增加下面代码,将png生成gifimport matplotlib.pyplot as pltimport imageio,osfrom PIL import ImageGIF=[]filepath="/home/xgj/Desktop/pyray/img66"#指定文件路径和目录filenames=os.listdir(filepath)for filename in os.listdir(filepath):    GIF.append(imageio.imread(filepath+"/"+filename))imageio.mimsave(filepath+"/"+'result.gif',GIF,duration=0.1)#这个duration是播放速度,数值越小,速度越快

3.2 效果图

4 转动的立方体:

4.1 代码:

from pyray.shapes.polyhedron import *#指定文件夹和路径draw_tetartoid('/home/xgj/Desktop/pyray/img22/im')#下面代码是自己增加的,目的是将png生成gifimport matplotlib.pyplot as pltimport imageio,osfrom PIL import ImageGIF=[]filepath="/home/xgj/Desktop/pyray/img22"#文件路径filenames=os.listdir(filepath)for filename in os.listdir(filepath):    GIF.append(imageio.imread(filepath+"/"+filename))imageio.mimsave(filepath+"/"+'result.gif',GIF,duration=0.1)#这个duration是播放速度,数值越小,速度越快

4.2 效果图:

5 放大的球

5.1 代码:

from pyray.shapes.sphere import *draw_oscillating_sphere('/home/xgj/Desktop/pyray/img20/im', 20, 2)import matplotlib.pyplot as pltimport imageio,osfrom PIL import ImageGIF=[]filepath="/home/xgj/Desktop/pyray/img20"#文件路径filenames=os.listdir(filepath)for filename in os.listdir(filepath):    GIF.append(imageio.imread(filepath+"/"+filename))imageio.mimsave(filepath+"/"+'result.gif',GIF,duration=0.1)#这个duration是播放速度,数值越小,速度越快

5.2 效果图

6 彩色静态图

6.1 代码:

from pyray.shapes.cube import *#建议7,不要太大,numTerms=7#popup=True是自动跳出图片cube_with_cuttingplanes(7, popup=True,baseLocn='/home/xgj/Desktop/pyray/cube')

6.2 图

=======放大招了=======

7 python思维锻炼一:

7.1 源代码:

from pyray.shapes.paraboloid import *draw_paraboloids()

7.2 报错

Traceback (most recent call last):  File "/home/xgj/Desktop/pyray/bug1.py", line 3, in <module>    draw_paraboloids()  File "/usr/local/python3.8/lib/python3.8/site-packages/pyray/shapes/paraboloid.py", line 143, in draw_paraboloids    r = rot.rotation(3, np.pi/30*j)NameError: name 'rot' is not defined

我是进入(root下):/usr/local/python3.8/lib/python3.8/site-packages/pyray/shapes/paraboloid.py

打开这个py文件,143行,将rot删除

#将修改成    #r = rot.rotation(3, np.pi/30*j)  #bug    r = rotation(3, np.pi/30*j) 

因为我是linux

'''同时将basedir is ..\\images\\RotatingCube\\修改成/home/xgj/Desktop/pyray/images/RotatingCube/''''''#也修改如下def draw_paraboloids(scale=12.5, basedir="/home/xgj/Desktop/pyray/images/RotatingCube/"):'''

7.3 修改后的简洁完整代码:

from pyray.shapes.paraboloid import *draw_paraboloids()#自己增加import matplotlib.pyplot as pltimport imageio,osfrom PIL import ImageGIF=[]filepath="/home/xgj/Desktop/pyray/images/RotatingCube"#文件路径filenames=os.listdir(filepath)for filename in os.listdir(filepath):    GIF.append(imageio.imread(filepath+"/"+filename))imageio.mimsave(filepath+"/"+'result.gif',GIF,duration=0.1)#这个duration是播放速度,数值越小,速度越快

7.4 效果图:

8 python思维锻炼一:

8.1 源代码:

from pyray.shapes.plane import *for i in range(20):     best_plane_direction(im_ind=i) 

8.2 第一次报错提示:

Traceback (most recent call last):  File "/home/xgj/Desktop/pyray/bug.py", line 3, in <module>    best_plane_direction(im_ind=i)  File "/usr/local/python3.8/lib/python3.8/site-packages/pyray/shapes/plane.py", line 60, in best_plane_direction    font = ImageFont.truetype("arial.ttf", 75)  File "/usr/local/python3.8/lib/python3.8/site-packages/PIL/ImageFont.py", line 642, in truetype    return freetype(font)  File "/usr/local/python3.8/lib/python3.8/site-packages/PIL/ImageFont.py", line 639, in freetype    return FreeTypeFont(font, size, index, encoding, layout_engine)  File "/usr/local/python3.8/lib/python3.8/site-packages/PIL/ImageFont.py", line 187, in __init__    self.font = core.getfont(OSError: cannot open resource

8.3 找到文件plane.py,root下进去,修改为自己的字体文件,可自定义。

   #font = ImageFont.truetype("arial.ttf", 75) #bug    font = ImageFont.truetype("hwfs.ttf", 75)      #我自己的字体:hwfs.ttf 华文仿宋放在根目录下,也可以自己指定

8.4 在运行,第二次报错

Traceback (most recent call last):  File "/home/xgj/Desktop/pyray/bug.py", line 3, in <module>    best_plane_direction(im_ind=i)  File "/usr/local/python3.8/lib/python3.8/site-packages/pyray/shapes/plane.py", line 79, in best_plane_direction    render_scene_4d_axis(draw, r1, 4, scale = scale, shift = shift)NameError: name 'render_scene_4d_axis' is not defined

8.5 在root下的plane.py代码前增加这个模块导入

from pyray.axes import *  #add

8.6 第3次运行,报错

Traceback (most recent call last):  File "/home/xgj/Desktop/pyray/bug.py", line 3, in <module>    best_plane_direction(im_ind=i)  File "/usr/local/python3.8/lib/python3.8/site-packages/pyray/shapes/plane.py", line 104, in best_plane_direction    draw_circle_x_y(draw=draw, r = r, center=pt_1[:2], radius=1, start = np.array([1/np.sqrt(2), 1/np.sqrt(2), 0]), arcExtent = arxExt, scale = scale, shift=shift)NameError: name 'draw_circle_x_y' is not defined

8.7 与上面相同,导入这个模块

from pyray.shapes.circle import *  #add

8.8 并将最后一行修改为:

#im.save('.\\im' + str(im_ind) + '.png')  #bugim.save('/home/xgj/Desktop/pyray/img44/im' + str(im_ind) + '.png')  #new,操作系统不同,指定路径

8.9 修改后的完整代码:

from pyray.shapes.plane import *for i in range(20):     best_plane_direction(im_ind=i)   #自己增加的生成gifimport matplotlib.pyplot as pltimport imageio,osfrom PIL import ImageGIF=[]filepath="/home/xgj/Desktop/pyray/img44"#文件路径filenames=os.listdir(filepath)for filename in os.listdir(filepath):    GIF.append(imageio.imread(filepath+"/"+filename))imageio.mimsave(filepath+"/"+'result.gif',GIF,duration=0.1)

效果图:

===搞定===,当然还可以自己继续修改,提高自己的python思维,可以试着玩===

整理并分享出来,喜欢就点赞、转发和收藏。

本人亲测,绝对原创,这么跟我下来后是不是感觉自己是大神了。

要学会看python的报错,自己修改,这是重要的python的能力之一。come on!

标签: #python哪个版本支持ryu