株式会社デジタル・フロンティア-Digital Frontier

Header

Main

  • TOP
  • DF TALK
  • 宇宙の深淵に触れてみる? 黄金比でジェネっぽいことしてみた

宇宙の深淵に触れてみる? 黄金比でジェネっぽいことしてみた

2014/2/10

Tag: ,

どもです、冬は苦手です、伊藤です。

今日とりあげるのは「黄金比」です。英語では golden ratio
なんか自然界には黄金比になっているものがいっぱいあるとか、
グラフィックデザインとかでバランスを黄金比にすると美しく見えるとか、
ほら、オウムガイのあの図とか、有名ですよね。

(※わからない方はこちら→ google先生「オウムガイ 黄金比」

有名なんですけど使いどころがよく分からないというか
ぶっちゃけほんとに美しいの?みたいな感じで逆に興味を持ったので

よーし、今回はこれを使ってちょっと遊んでみちゃうぞ。

それからそれから

…と思って調べていたんですが、
なんかオウムガイのアレは、最近では俗説扱いみたいですね!

しらんがなw

という感じではありますが、
個人的にはあれが代名詞だろ的なイメージもあったのに「じつは黄金比じゃありませんでしたー!」っていうのは

…というわけにもいかないのでそっちじゃない方向で調査を続行、
黄金比は構図や面積比的なものだけでなく、角度にもあるらしいじゃないですか。
なんでも「黄金角」とおっしゃるそうで、
お、これなら遊べそうですよ。

やってみるよ

まずは黄金比φ(ファイ。phi)をpythonで求めてみます。
このあともいろいろ使うと思うのでmathモジュール読み込みも。

import math
phi = (1+math.sqrt(5))/2.0

つづけて、黄金角α(アルファ。alpha)

alpha = 360/(1+phi)

これを使って、Mayaでオブジェクトをばらまいてみます。

import pymel.core as pm
count = 1000

i=0
while i<count:
    dot = pm.polySphere(sa=8,sh=8)&#91;0&#93;
    grp = pm.group()
    dot.setTranslation(&#91;0,0,i/phi&#93;)
    grp.setRotation(&#91;0,i*alpha,0&#93;)
    i+=1
&#91;/python&#93;

<a href="https://dftalk.jp/cp-bin/wordpress/wp-content/uploads/2014/01/gr1.png" rel="lightbox"><img class="alignleft size-medium wp-image-11485" title="golden ratio 1" src="https://dftalk.jp/cp-bin/wordpress/wp-content/uploads/2014/01/gr1-300x155.png" alt="黄金比配置 1" width="300"  /></a><br clear=all />

ほっほーなるほど、
これはあれですか、<b>ヒマワリの種</b>の並びとか、
そういう感じですかね。
確かに美しいような気もします。
まるで僕にも美しいものをめでる心がのこっていたかのようです。
あとなんか宇宙っぽいような気もします。宇宙。

<h3>~~宇宙~~</h3>

というキーワードでなんとなく<b>電波を受信</b>しましたので、
以下のように書き換えてみました。

[python num =1]
startCount =401
count = 1000

for i in xrange(startCount,count):
    dot = pm.polySphere(r=9,sa=8,sh=8)[0]
    grp = pm.group()
    dot.setTranslation([0,0,i/phi])
    grp.setRotation([0,i*alpha,0])

黄金比配置 2

ふむふむ
心持ち宇宙を書き換えたよな気がします。
根拠の無いやる気が出てきました。

ちなみにPython3系だと、
rangeとxrangeと同じ振る舞いになるためrangeを使えばいいらしいですが、
きっとMayaが3系になるのは数百年後だしゲッフゲフ

さて引き続き、
モチベーションに従ってこれを花火っぽく動かしてみましょう。
たとえば、こう。

import random
rand = random.random

startCount = 401
count = 1000
eStr = []
dur = 30

expNode = pm.expression(s='')

for i in xrange(startCount,count):
    dot = pm.polySphere(r=9,sa=8,sh=8)[0]
    grp = pm.group()
    r= round(i/phi,4)
    dot.setTranslation([0,0,r])
    grp.setRotation([0,i*alpha,0])
    spacer = rand()*r/4
    spacer = round(spacer,4)
    tempstr = '%s.tz = frame*(%s/%s)+%s;'%(dot.name(),(r-spacer),dur,spacer)
    eStr.append(tempstr)

expNode.setExpression(u'\n'.join(eStr))

(▼)GIFアニメです。クリックしてみてください
黄金比配置アニメーション

どうでしょうか。
これでだいぶ宇宙を書き換えてる花火っぽくなった気がします。
あとは直線的な動きではなくてひねりを加えたり、色を変えたりすれば
より「ぽさ」を演出できるのではないかと思います。
画面にいっぱい打ち上げれば立派にジェネレイティヴCGできるじゃありませんか(安直
(※ちなみに、もっとゆっくり広げたい場合は dur の値を大きくしてみてください)

むすび

なんか黄金比とりあげよーっとか思ったときには
こんなところに着地するとは思っていなかったのですが、
元ネタの映画がお分かりの方は今度飲みに行きましょう。
あと螺旋配置という意味では黄金比関係ないのでいろんな螺旋で試してみてください(ぇー

春になるのが待ち遠しいですね。
それでは。

 ※免責事項※
 本記事内で公開している全ての手法・コードの有用性、安全性について、当方は一切の保証を与えるものではありません。
 これらのコードを使用したことによって引き起こる直接的、間接的な損害に対し、当方は一切責任を負うものではありません。
 自己責任でご使用ください

Pocket

コメント

[…] これらマウスイベントと以前の記事で伊藤が書いたものを合わせると以下のようなものができます。w (参考: 宇宙の深淵に触れてみる? 黄金比でジェネっぽいことしてみた) […]

1 thought on “宇宙の深淵に触れてみる? 黄金比でジェネっぽいことしてみた”

コメントフォーム

コメントは承認制ですので、即時に反映されません。ご了承ください。

*