見出し画像

BlenderとPythonの魔法:乱数を使って芸術的なオブジェクトの世界を創造

BlenderとPythonを組み合わせることで、私たちは新しいアートの表現を探求しています。このブログでは、乱数を利用してBlender内でオブジェクトを配置する方法を紹介します。これまでの経験から、5x15=75の立方体を配置し、乱数で色を付ける方法を学びました。今回は、さらに進化させ、リサージュ曲線を用いて100個のトーラスを配置し、それぞれを乱数で色付け、回転、リサイズする方法を試みました。このブログでは、その背景、最近の動向、私のこれまでの経験、そして今回の試みについて詳しく説明します。最後に、今後の展望と次回のテーマについても触れています。


BlenderとPythonの融合:乱数を活用したオブジェクト配置の魅力

Blenderは、3Dコンテンツ作成のための強力なオープンソースソフトウェアとして、映画制作からゲーム開発まで幅広い分野で利用されています。一方、Pythonはその柔軟性と拡張性から、データ分析からウェブ開発まで多岐にわたる分野でのプログラミング言語としての地位を確立しています。この二つのツールを組み合わせることで、私たちはBlenderの3D空間内でのオブジェクトの配置やアニメーションを、Pythonのプログラムを用いて自動化・最適化することができます。

特に、乱数を用いたオブジェクトの配置は、予測不可能な美しいパターンや形状を生み出すことができるため、アーティスティックな表現の一つとして注目されています。私自身も、これまでのブログでPythonを用いたBlenderの基本的な操作について紹介してきましたが、今回はその一歩先を目指し、乱数を駆使して新しいアートの表現を試みました。

最近の動向: 3Dアートとプログラミングの融合

近年、テクノロジーとアートの融合が進む中、3Dアートの世界も例外ではありません。特に、プログラミングを活用したアート作品の制作が増えてきています。これは、プログラムを用いることで、従来の手法では難しかった複雑な形状や動きを持つ作品を制作できるためです。

BlenderとPythonの組み合わせは、この新しい動向の中心となっています。世界中のアーティスツやデザイナーが、この組み合わせを利用して、従来の3Dモデリングの枠を超えた新しい表現を追求しています。特に、乱数を用いて生成される形状やパターンは、その一時性と独自性から、多くのクリエイターに愛されています。

また、SNSやオンラインギャラリーでの作品の共有が容易になったことで、このような新しいアートの形が急速に広まっています。BlenderとPythonを用いた作品も、その中で注目される存在となっており、今後のさらなる発展が期待されています。

3Dモデリングとプログラミングの探求

Blenderを使用した3Dモデリングの世界は、私にとって常に魅力的なフィールドでした。特に、Pythonを活用してBlender内での操作を自動化することには、深い興味を持っています。これまでの経験を振り返ると、私は数々のプロジェクトでこの組み合わせを試みてきました。

最初に挑戦したのは、5x15=75個の立方体を並べるシンプルなプログラムでした。このプロジェクトでは、Pythonの基本的な操作を学びながら、Blender内でのオブジェクトの配置や色の設定を行いました。そして、乱数を用いて色をランダムに設定することで、それぞれの立方体が異なる色合いを持つようにしました。

この初めての挑戦を通じて、プログラミングと3Dモデリングの組み合わせの可能性を実感しました。それ以降、私はこの領域でのさらなる探求を続けてきました。それぞれのプロジェクトで得た知識や経験は、次の挑戦へのステップアップとなり、私の技術の向上に大きく寄与しています。

リサージュ曲線を用いたアートの創造

Blenderでの3Dモデリングは、その自由度の高さから多くのクリエイターに愛されています。特にPythonを駆使することで、計算的に美しい形状や動きを表現することができます。今回私は、その一例として「リサージュ曲線」という数学的な曲線を用いて、新しいアートの創造に挑戦しました。

リサージュ曲線は、異なる周波数の正弦波や余弦波の組み合わせによって描かれる複雑な曲線です。この曲線の美しさと、乱数を用いたオブジェクトの配置の意外性を組み合わせることで、一風変わったアート作品を目指しました。

具体的なプログラムは以下の通りです。

import bpy
import numpy as np
import random

# パラメータtに応じて(x, y, z)座標を返す関数を定義する
def lissajous(t):
   x = np.cos(t * 3)*6
   y = np.sin(t * 3)*6
   z = np.cos(t * 5)*6
   return((x, y, z))

# 既存のオブジェクトを削除する
for mesh in bpy.data.meshes:
    bpy.data.meshes.remove(mesh)

# 100個のオブジェクトを繰り返し作成する
ts = np.linspace(0, 2* np.pi, 100)
for i in range(len(ts) - 1):
    pos = lissajous(ts[i])
    rand1 = random.random()
    rand2 = random.random()
    rand3 = random.random()
    bpy.ops.mesh.primitive_torus_add()
    bpy.ops.transform.translate(value=pos)
    bpy.ops.transform.rotate(value=3.1415*rand1 ,orient_axis='Y')
    bpy.ops.transform.rotate(value=3.1415*rand2 ,orient_axis='Z')
    bpy.ops.transform.rotate(value=3.1415*rand3 ,orient_axis='X')
    bpy.ops.transform.resize(value=(0.5+rand1/2,0.5+rand2/2,0.5+rand3/2))
    material_new = bpy.data.materials.new('Random')
    material_new.use_nodes = True 
    bsdf = material_new.node_tree.nodes["プリンシプルBSDF"]
    bsdf.inputs[0].default_value = (rand1, rand2, rand3, 1)
    bsdf.inputs[6].default_value = 1
    bsdf.inputs[9].default_value = 0
    bsdf.inputs[17].default_value = 1
    bpy.context.object.data.materials.append(material_new)

このプログラムは、リサージュ曲線上に100個のトーラス形状のオブジェクトを配置し、それぞれのオブジェクトにランダムな色と形状を与えるものです。特に、`lissajous`関数を用いて、リサージュ曲線上の座標を計算しています。

このようにして、私はBlenderとPythonを駆使して、数学的な美しさを持つアート作品の制作に挑戦しました。今後もこのような試みを続けていく予定です。

BlenderとPythonを駆使した今後の展望

BlenderとPythonの組み合わせは、3Dアートの世界で無限の可能性を秘めています。今回のリサージュ曲線を用いたアート制作もその一例であり、これからもこの組み合わせを活用して、さまざまなアート作品の制作に挑戦していきたいと考えています。

近年、仮想現実(VR)や拡張現実(AR)技術が急速に進化しており、3Dモデリングの重要性も増してきています。BlenderとPythonを活用することで、これらの新しい技術領域にも対応したアート作品の制作が可能となります。例えば、リアルタイムで変化する3Dアートや、ユーザーの動きに反応するインタラクティブな3Dアートなど、新しい形のアート表現を追求していきたいと思っています。

また、AI技術の進化も注目しています。PythonはAIライブラリが豊富であり、Blenderと組み合わせることで、AIを活用したアート制作も可能となります。AIが自動で3Dモデルを生成したり、ユーザーの好みを学習してアートを生成するなど、これまでにない新しいアートの形が期待できます。

最後に、今回のリサージュ曲線のような数学的なアートも、さらに深掘りしていきたいと考えています。フラクタルやカオス理論など、数学の美しさを3Dアートで表現することで、新しいアートの世界を広げていきたいと思っています。

この記事が気に入ったらサポートをしてみませんか?