全て楕円軌道の太陽系。Blenderのpythonプログラム смотреть онлайн
惑星のテクスチャは下記webpageのもの(creative commons)を使用した。
https://www.solarsystemscope.com/textures/
ハレー彗星の尾は、速さの違う3本のparticleで作ってある。本物の尾は溶け出した物によって、プリズムのように分かれるのだと思う。
ソースリストは以下の通り。が、今回はBlenderのデータ構造がないと動かせないだろうな。。
--- ここから軌道描画の処理 ---
import bpy
import numpy as np
XMAX = 128*2
XM = 70*2
YMAX = 72*2
GRAV = 120.0 # 引力の強さ
GRAVCOME = 2.4
NUMCOME = 10
NUMSATE = 5
NUM = NUMCOME+NUMSATE
NUMTRACE = 40 # 軌跡の数
ITVLTRACE = 5 # 軌跡描画の間隔
MOONPARAM = [[-7.5,-0.58],[-5,-0.68],[-7.5,-0.58],[-12.5,-0.38],[-21.5,-0.33]]
PLANDIST1 = np.array([0.387,0.723,1.000,1.524,2.767,5.204,9.582,19.201,30.047,39.445,35.082])
PLANDIST2 = np.sqrt(PLANDIST1)
PLANDIST = PLANDIST2 * (180 / PLANDIST2[6])
HALLEY = 9
PLANPARAM = [
[1.54,PLANDIST[0]],
[1.25,PLANDIST[1]],
[1.13,PLANDIST[2]],
[0.99,PLANDIST[3]],
[0.62,PLANDIST[5]],
[0.49,PLANDIST[6]],
[0.37,PLANDIST[7]],
[0.31,PLANDIST[8]],
[0.28,PLANDIST[9]],
[-0.18,PLANDIST[10]]]
TIMESTEP = 1
comet = []
tracex = []
tracey = []
trace = []
x = np.zeros(NUM)
y = np.full(NUM, YMAX + 30.0)
kx = np.zeros(NUM)
ky = np.zeros(NUM)
jikken = 0.4
for j in range(NUM):
if j LT NUMCOME: # LTを不等号に修正要。(不等号をyoutubeが許していないため)
comet.append(bpy.data.objects['comet%d'%j])
else:
comet.append(bpy.data.objects['moon%d'%(j-NUMCOME)])
tracex.append([])
tracey.append([])
tracex[j] = np.zeros(NUMTRACE)
tracey[j] = np.zeros(NUMTRACE)
if j LT NUMCOME: # LTを不等号に修正要。
trace.append(bpy.data.objects['trace%d'%j])
for i in range(0,bpy.context.scene.frame_end):
if (i%100) == 0:
print(int(i/TIMESTEP))
else:
print(int(i/TIMESTEP), end=' ')
for j in range(NUM):
me = comet[j]
if x[j] GT (XMAX-XM) or x[j] LT (-XMAX-XM) or y[j] GT (YMAX+20) or y[j] LT (-YMAX-20): # LT,GTを不等号に修正要。
if j LT len(PLANPARAM): # LTを不等号に修正要。
x[j] = -PLANPARAM[j][1]
y[j] = 0.0
kx[j] = 0.0
ky[j] = -PLANPARAM[j][0]
elif j LT NUMCOME: # LTを不等号に修正要。
x[j] = np.random.rand() * -70 - 50 - XM
y[j] = 0.0
kx[j] = np.random.rand() * -0.1
ky[j] = np.random.rand() * -0.5 - 0.1
else:
x[j] = MOONPARAM[j-NUMCOME][0]
y[j] = 0.0
kx[j] = 0.0
ky[j] = MOONPARAM[j-NUMCOME][1]
print(j,x[j],ky[j])
tracex[j][:] = x[j]
tracey[j][:] = y[j]
# 引力の中心から現在座標までの距離の2乗。
rr = x[j] ** 2 + y[j] ** 2
# 引力の中心から現在座標までの距離。
r = np.sqrt(rr)
# 引力は距離の2乗に反比例する。
if j LT NUMCOME: # LTを不等号に修正要。
g = GRAV / rr
else:
g = GRAVCOME / rr
# 引力ベクトルは現在座標(xy)の逆方向(-xy)。
# これはベクトルの長さが距離だが、引力を掛けるために一定の長さにする。
# ここでは計算に都合の良い、長さ1のベクトルを求める。
# ベクトルの長さは距離なので、距離で割る。(-xy/r)
# これに引力を掛ける。(-xy/r)*g
gg = g / r
gx = gg * -x[j]
gy = gg * -y[j]
# 現在座標と慣性ベクトルと引力ベクトルの和を新しい座標とする。
nx = x[j] + kx[j] + gx
ny = y[j] + ky[j] + gy
# 移動量を慣性ベクトルとする。
kx[j] = nx - x[j]
ky[j] = ny - y[j]
# 現在座標を新しい座標に書き替える。
x[j] = nx
y[j] = ny
if (i % TIMESTEP) != 0:
continue
bpy.context.scene.frame_set(i)
# 彗星の位置を更新。
me.location = [x[j],y[j],0.0] #set_center([x[j],y[j]])
if j == HALLEY:
me2 = bpy.data.objects['halleytail']
me2.rotation_euler.z = np.arctan2(-y[j],-x[j])
me2.keyframe_insert(data_path="rotation_euler")
# 定期的に軌跡を更新する。
if (i % ITVLTRACE) == 0:
tracex[j][1:] = tracex[j][:-1]
tracex[j][0] = x[j]
tracey[j][1:] = tracey[j][:-1]
tracey[j][0] = y[j]
if j LT NUMCOME: # LTを不等号に修正要。
me2 = bpy.data.objects['trace%d'%j].data.splines[0].bezier_points
num = np.min([NUMTRACE,len(me2)])
for jj in range(num):
me2[jj].handle_left_type = 'AUTO'
me2[jj].handle_right_type = 'AUTO'
me2[jj].co.x = tracex[j][jj]
me2[jj].co.y = tracey[j][jj]
for jj in range(num):
me2[jj].co.x = tracex[j][jj]
me2[jj].co.y = tracey[j][jj]
me2[jj].keyframe_insert(data_path="co")
me2[jj].keyframe_insert(data_path="handle_left")
me2[jj].keyframe_insert(data_path="handle_right")
me.keyframe_insert(data_path="location")
print('finished.')
--- ここまで ---
--- 別途、自転の処理あり。(この欄におさまらず) ---
Что делает видео по-настоящему запоминающимся? Наверное, та самая атмосфера, которая заставляет забыть о времени. Когда вы заходите на RUVIDEO, чтобы посмотреть онлайн «全て楕円軌道の太陽系。Blenderのpythonプログラム» бесплатно и без регистрации, вы рассчитываете на нечто большее, чем просто загрузку плеера. И мы это понимаем. Контент такого уровня заслуживает того, чтобы его смотрели в HD 1080, без дрожания картинки и бесконечного буферизации.
Честно говоря, Rutube сегодня — это кладезь уникальных находок, которые часто теряются в общем шуме. Мы же вытаскиваем на поверхность самое интересное. Будь то динамичный экшн, глубокий разбор темы от любимого автора или просто уютное видео для настроения — всё это доступно здесь бесплатно и без лишних формальностей. Никаких «заполните анкету, чтобы продолжить». Только вы, ваш экран и качественный поток.
Если вас зацепило это видео, не забудьте взглянуть на похожие материалы в блоке справа. Мы откалибровали наши алгоритмы так, чтобы они подбирали контент не просто «по тегам», а по настроению и смыслу. Ведь в конечном итоге, онлайн-кинотеатр — это не склад файлов, а место, где каждый вечер можно найти свою историю. Приятного вам отдыха на RUVIDEO!
Видео взято из открытых источников Rutube. Если вы правообладатель, обратитесь к первоисточнику.