5
2

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 3 years have passed since last update.

KLab EngineerAdvent Calendar 2020

Day 22

Blenderのエンジニアっぽい使い方: Driverという機能

Last updated at Posted at 2020-12-21

#はじめに
皆さんこんにちは。この記事はKLab 2020 Advent Calendarの22日目になります。
ゲーム開発において普段コードを書く仕事を担当しているエンジニアであっても何らかのDCCツールを使えるとテスト用3Dモデルが欲しい時に便利です。
私はBlenderを愛用していまして、昨今のテレワークの状況下でもライセンスの問題などで困ることなく導入もスムーズかと思います。
今回はBlenderに搭載されているDriverという機能について紹介します。Driverはコーディングに似た側面があるのでエンジニアにとっても楽しめるものだと思います。

#Driverとは
3Dのアセットを作っていくうえで、位置/角度/スケールといったTransform情報やマテリアルの色を決定するパラメータなどを直接手で入力するのではなく、数式を使った特定の条件で動かしたいといったシチュエーションで活躍するのがDriverです。

#Driverの使い方
以下の画像のようにSuzanneオブジェクトとArrowオブジェクトがシーンに配置されています。ArrowはX軸に対して平行に動かす想定です。その座標を利用してSuzanneのRotationZの値を変化させて回転するといったDriverを作っていきましょう。
Capture01.PNG

まずDriverを作成するには数式によって値を決定したいもの(今回で言えばSuzanneのRotationZ)の上で右クリックしてAdd Driverを選択します。
Capture02.PNG
するとRotationZの欄が紫色になりますので再度右クリックでOpen Driver Editorを選択しましょう。
Capture03.PNG
以下がDriverを設定する画面です。
青い部分が取得したい変数で、赤の部分がRotationZの値を決定するための数式です。
Capture04.PNG
まずは変数部分の設定をしていきましょう。
変数名は任意の名前を付けることができますが、今回は1つだけなのでデフォルトのままvarで大丈夫です。
Arrowオブジェクトの座標を取得したいのでObjectの欄はArrowを選択します。
TypeをX LocationにすることでArrowオブジェクトのX座標を取得できます。
Capture05.PNG
数式の部分は上で設定した変数varを利用して、Arrowの移動量の2倍という式を作ります。(精度を上げたければ低い倍率、少ないArrowの移動で大きく動かしたければ高い倍率にします)
Capture06.PNG
これでSuzanの回転をArrowで制御できるようになりました!!
Capture07.gif

#終わりに
今回はわかりやすく説明するためにシンプルな例で紹介しますが、実践的にはRigを組むときなどに重宝します。
ボーンのIKコンストレイントのInfluence値をDriverでコントロールするとIK/FKを切り替えるスイッチを作ることが可能です。
Driverには変数・数式といった概念が登場し複雑なプログラムを組むのに比べたら簡単なものとなりますが、コーディングの経験が3Dアセットを作る際にも活きてくることを知っていただければ嬉しいです。

5
2
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
5
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?