1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Blenderでパズルのアニメーション

Last updated at Posted at 2022-03-16

Blenderでパズルのアニメーション

Blender3.1で、パズルのアニメーションをするPythonで作成したアドオンの紹介です。

パズルのルール

  • アイテムを動かして、各棒のアイテムが揃ったら完成
  • アイテムは上からしか動かせない
  • 移動先は、空の棒か同じアイテムの上でないといけない
  • 1本の棒は4つまでしかおけない
  • 同じアイテムは同時に動かせる

アドオン動作の前提条件

  • 3本以上の棒といくつかのアイテムが必要です。いずれもpuzzleというコレクションに入っている必要があります。
  • アイテムは、焼き鳥のように棒に刺さっている必要があります。
  • 棒の高さは揃えてください。アイテムの高さは棒を4分割したくらいの高さで揃えてください。
  • アイテムはマテリアルで区別します。1つのマテリアルにちょうど4つのアイテムが必要です。

やり方

  • Puzzle-Anim(Blender Add-on)をインストールしてください。
  • サイドバーの編集タブの「Puzzle Anim」を開いてください。
  • 「Make sample」を押してください。サンプルのオブジェクトを作成します。
  • 「Make animation」を押してください。パズルを解くアニメーションがはじまります。

変更してみよう

棒とアイテムは下記のようにいくつでも置いたり場所も変えられます。
※ アイテムの追加は、アニメーションをクリアしてから行ってください。アニメーションが残っていると、追加時に位置が再設定されます。

アイテムを変更したら、再度、「Make animation」を押すと新しいアニメーションがはじまります。

ロジック

  • puzzuleコレクションのオブジェクトの高さを2つにクラスタリングして、高い方を棒と認識し、残りをアイテムと認識します。
  • 棒の位置を初期値にして、xy座標でクラスタリングして、各棒に刺さっているアイテムを識別します。
  • 深さ優先探索で解を探索します。
  • 解からアニメーションを作成します。

※ クラスタリングは、自前でkmeansで行っています。

以上

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?