返回介绍

3.4 让模型动起来

发布于 2023-08-12 23:09:31 字数 1035 浏览 0 评论 0 收藏 0

通过 transform 参数传递一个以渲染时长为参数的函数给模型,可以实现复杂的模型动画。该函数返回一个由一系列旋转、位移和缩放动作组成的元组:

  • 旋转用 4 元组表示,前 3 个元素是旋转轴,第 4 个元素是旋转角度,旋转方向遵从右手定则
  • 位移用 3 元组表示,分别表示模型在 xyz 轴上的位移距离
  • 缩放系数用数值表示

下面这几行代码,绘制了一个半径为 1 的地球,并以 20°/s 的角速度绕地轴自转。配合太阳光照效果和模型动画,可以清晰地看到晨昏分界线的变化。

import numpy as np
import wxgl

r = 1 # 地球半径
gv, gu = np.mgrid[np.pi/2:-np.pi/2:91j, 0:2*np.pi:361j] # 纬度和经度网格
xs = r * np.cos(gv)*np.cos(gu)
ys = r * np.cos(gv)*np.sin(gu)
zs = r * np.sin(gv)

light = wxgl.SunLight(direction=(-1,1,0), ambient=(0.1,0.1,0.1)) # 太阳光照向左前方,暗环境光
tf = lambda t : ((0, 0, 1, (0.02*t)%360), ) # 以 20°/s 的角速度绕 y 逆时针轴旋转(t 是以毫秒为单位的渲染时长)

app = wxgl.App(haxis='z') # 以 z 轴为高度轴
app.title('自转的地球')
app.mesh(xs, ys, zs, texture='res/earth.jpg', light=light, transform=tf)
app.show()

让模型动起来

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文