【Blender】Pythonで関数のモデリング

posted in: 3D Modeling | 0

Blenderによるモデリングの際、頂点を任意の関数に従って配置したいと思ったことはありますか?

このような作業は、手作業ではかなり困難となることが予想されますが、これを自動的に実行する手法があります

それは、Pythonによるプログラミングです

実は、BlenderではPythonを用いることが標準機能として可能となっています

そこで今回は、このプログラミングという手法を利用し、任意の関数に従って頂点をプロットする方法をお解説します

必要な操作

スクリプトを書く前に、わずかな手作業があります

これは上図に示した通り、①Scriptingタブを選択することと、②その下の「+New」を選択し、テキストデータブロックを新規作成することです

生じたテキストデータブロックには、本ページ下部に示されているスクリプトを記します

このスクリプトの実行は、再生ボタンをクリックすることで可能です

また、このスクリプト中で定義しているx_co, y_co, z_coという変数を新しく定義することで、任意の関数を描き出すことができます!

スクリプトの内容については、本動画において詳細に解説しておりますので、気になる方はぜひご覧ください

スクリプト

import bpy
import math

bpy.ops.mesh.primitive_vert_add()

for i in range(0,1000):
    x_co = i/50*math.pi #EDIT
    y_co = 0 #EDIT
    z_co = math.sin(i/50*math.pi) #EDIT
    
    #g key
    bpy.ops.transform.translate(value=(x_co, y_co, z_co), 
    orient_axis_ortho='X', orient_type='GLOBAL', 
    orient_matrix=((1, 0, 0), (0, 1, 0), (0, 0, 1)), 
    orient_matrix_type='GLOBAL', 
    constraint_axis=(True, False, False), 
    mirror=True, use_proportional_edit=False, 
    proportional_edit_falloff='SMOOTH', 
    proportional_size=1, use_proportional_connected=False, 
    use_proportional_projected=False)
    
    #e key
    bpy.ops.mesh.extrude_region_move(MESH_OT_extrude_region={"use_normal_flip":False, 
    "use_dissolve_ortho_edges":False, "mirror":False}, 
    TRANSFORM_OT_translate={"value":(-x_co, -y_co, -z_co), 
    "orient_axis_ortho":'X', "orient_type":'GLOBAL', 
    "orient_matrix":((1, 0, 0), (0, 1, 0), (0, 0, 1)), 
    "orient_matrix_type":'GLOBAL', 
    "constraint_axis":(False, False, False), 
    "mirror":False, "use_proportional_edit":False, 
    "proportional_edit_falloff":'SMOOTH', 
    "proportional_size":1, 
    "use_proportional_connected":False, 
    "use_proportional_projected":False, 
    "snap":False, "snap_target":'CLOSEST', 
    "snap_point":(0, 0, 0), "snap_align":False, 
    "snap_normal":(0, 0, 0), "gpencil_strokes":False, 
    "cursor_transform":False, "texture_space":False, 
    "remove_on_cancel":False, "view2d_edge_pan":False, 
    "release_confirm":False, "use_accurate":False, 
    "use_automerge_and_split":False})

bpy.ops.transform.translate(value=(x_co, y_co, z_co), 
orient_axis_ortho='X', orient_type='GLOBAL', 
orient_matrix=((1, 0, 0), (0, 1, 0), (0, 0, 1)), 
orient_matrix_type='GLOBAL', 
constraint_axis=(True, False, False), 
mirror=True, use_proportional_edit=False, 
proportional_edit_falloff='SMOOTH', 
proportional_size=1, use_proportional_connected=False, 
use_proportional_projected=False)


【無駄のないVtuber作製講座】Part 1-1: ショートカット ・機能編

posted in: 3D Animation, 3D Modeling, Technology | 0

(Blender ショートカット の解説は、動画バージョンも存在します:Part 1-1, Part 1-2, Part 1-3, Part 1-4

前回のPart 0では、Vtuberを作製するために必要なツールについてご紹介しました

今回からは、そのツールの一つであるBlenderの操作方法について主に解説します

BlenderでVtuberを作る手順の一覧

具体的なプランについては、上に示した通りとなります

最初は3Dモデリングで始まり、テクスチャリング、リギングと続きます

これらの操作がBlenderで行えることになります

その後は、Unreal Engine 4によるインポート作業、ブループリント、ビルディング作業と続きます

最後に、OBS Studioによる録画方法について解説します

ショートカット 一覧

3Dのキャラクターを造形するには、そのキャラクターに対応する多角形を構成していく必要があります

この過程をモデリングといいます

Blenderでは、このモデリングを行う際に、様々なショートカットキーを用いることが必要です

しかしながら、このようなショートカットキーの存在は、自発的に気付けるほど目立つものではないため、予め勉強しておくことが鍵となります

そこで、モデリングの際に必須となるショートカットキー・機能を24個まとめました

これらを、基本的なものから順番に以下に掲載します

Blenderショートカットの必須知識

Shift + A: オブジェクトを追加します。上メニューのEdit, Preferencesから”Extra Objects”というアドオンをONにすれば、追加できるオブジェクトの幅が広がります。

G・S・R: オブジェクトの移動・拡縮・回転。これらのキーを押した後に、X・Y・Zキーを押すことによって、変形方向を対応する軸方向に限定することができます。変形をYZ平面に限定する際は、YZ同時押しではなく、Shift + Xキーを押します。また、G・S・Rを押した後に、数字を入力すれば、変形がその入力値通りの挙動となります。

Ctrl + R: 新しく辺を挿入します。挿入する辺の数は、マウスのホイールを上下に動かすことで調節できます。

Ctrl + B: 辺に丸みをもたせます。Shift + Control + Bを適用した場合は、頂点に丸みをもたせることができます。

E: 面の押し出しです。右クリックで取り消しても、頂点数自体は元の2倍になっていることに注意。操作を取り消すには、右クリックに加えて、Ctrl + Zを適用する必要があります。Eの代わりにAlt + Eを適用した場合は、複数の面を個々に押し出すことが容易になります。

I: 面内に新しい面を挿入します。

頂点や辺の連結性を自在に制御する方法

F: 辺・面の形成。頂点を2つ選択した場合は辺が形成され、3つ以上選択した場合は面が形成されます。形成される辺・面は、元ある辺・面と交差することがあっても、これらと融合しません。

J: 辺の形成です。Fキーとの違いは、元ある辺や面と交差した場合に、これらと融合する点です。

K: ナイフツール。マウス操作とクリックにより、描くようにして新しい頂点を挿入できます。

M: 点の融合(マージ)。頂点を2つ以上選択した後、Mキーで生じるメニューバーから、融合形式を選択できます。

H・Alt + H:非表示・表示機能。見た目上ではXキーによる削除と類似していますが、非表示箇所はAlt + Hで元に戻すことができます。

G + G (+C): 頂点の線分上または直線状移動。

選択方法やプロポーショナル編集の方法

Alt + Click: 円周の選択機能(ループ選択)。Alt + Click + Ctrlを適用した場合は、選択できる辺の縦・横関係が逆転したものとなります。

Ctrl + “+” or “-“: 選択範囲の拡縮。ここで用いる+または-キーは、キーボードの数字キー上にある+または-キーです。

Ctrl + Click: 最短経路選択。2つ以上の頂点を選択する際に適用されます。

C: 選択モード。このモードにある限り、左クリック時は新しく頂点が選択されます。選択範囲を拡縮するには、マウスのホイールを用います。このモードを解除する際は、右クリックを押します。

L: 島選択。あるメッシュに対してLキーを適用した際、そのメッシュと辺を介してつながれたメッシュのみが選択されます。

Shift + D: 複製。複製後はマウス操作によって移動できるため、Xキー等によってその移動方向を限定することができます。Alt + Dを適用した場合は、複製後の変形などといった挙動も同一のオブジェクトを生成できます

Snap機能: 編集対称のオブジェクトの頂点を、他オブジェクトに吸着させる機能です。特に、リトポロジーなどにおいて有用です。

O: プロポーショナル編集。ある頂点に対して変形操作を行った場合、周りの頂点がその変形の影響を受けます。影響範囲は、マウスのホイールから調節できます。

座標系やモディファイアの活用方法

N: メニューバー表示切替。

Ctrl + A: 変形情報の初期化。特に、スケールが1以外の値である場合には、これを初期化することによって1にしておく必要があります。Nキーで表示されるスケール情報から、この値を確認しておきましょう。

ノーマル座標: 法線座標。法線とは、ある面と90°直交関係にある方向のことを指します。グローバル座標ではなく、面の直交方向に従ってモデリングを行いたい場合は、こちらの座標系を上メニューバーから選択しておく必要があります。

Alt + N: 面方向の調整。基本的に、外側から見える面は、全て外側を向いていなければなりません。この面の向きは右上のベン図のようなマークと対応するプルダウンメニューから、Face Orientationにチェックを入れることで確認できます。全ての面が青色に見える場合は面が外側を向いていることを意味しており、正常な挙動となります。赤い面が見える場合は、その面の選択後にAlt + Nを適用し、「外側として再計算」させましょう。

Bridge: 頂点の橋掛け機能。これは、アドオンの「Mesyu: LoopTools」をONにしておくことで利用できる機能となります。図の例のように、2つの六角形同士を繋ぎたい場合は、LoopToolsのBridgeを選択しましょう。この一度の操作により、頂点同士を繋ぐことが可能です。

Crease (Shift + E): 辺の鋭利化。鋭利化された辺は、Subdivision Surfaceがモデル全体に適用された後も、細分割化されません。

おわりに

以上が、Blenderによるモデリングにおいて必須となる24の機能となります

これらを全て把握しておけば、作業工程の効率化のみならず、ハイレベルな造形が可能となることが大いに期待できます。

ただし、これら24個は、覚えるべきものとして十分というよりは、最低限のものとして位置づけられます

英単語は覚えるしかないのと同様に、Blenderのショートカットキーについてはぜひ覚えましょう!!!

【無駄のないVtuber作製講座】Part 0: 準備編

posted in: 3D Animation, 3D Modeling, Technology | 0

(本記事は動画バージョンもあります!!)

最近Vtuberが流行っていますね

そこで、GAINENZもVtuberキャラとしてオリジナルの”ネンズ君”を作製してみました

ちゃんとリアルな人間の顔と対応して動くやつです

本記事から始まる「無駄のないVtuber作製講座」では、いかにしてこのようなVtuberキャラを作るかを解説していきます

動画バージョンがメインですので、そちらで使用したスライドをそのまま記事に用いて解説していきます

【準備編】

先に、Vtuber作成の全工程をお見せします。3Dモデリングから始まり、テクスチャリング、リギング、ブループリント、そしてモーションキャプチャ・録画という工程になります。

①3Dモデリングでは、キャラクターの構造を多角形によって構成していきます。

②テクスチャリングでは、モデルの外観に対して、顔の表情などと言った画像情報を乗せていきます。

③リギングでは、出来上がったモデルに骨を入れ、キャラクターが動けるような仕組みをつくります。

④ブループリントでは、モデルの顔の表情と、リアルな人間の顔の表情が対応する仕組みを作ります。

⑤最後のモーションキャプチャ・録画では、Vtuberキャラを人間と対応させて動かし、同時に任意のパソコン画面に出現させて録画します。

今回の講座では、目標を設定します。それは、「自作キャラをVtuber化する」ことです。ですので、キャラを自作する工程から解説していきますし、逆に、購入したキャラをVtuberとして使うといった方法については解説しません。ここで、今回作製するVtuberについては具体像が定まっています。それは

①配信者の”顔”と対応した表情変化を示すこと。

②任意のPC画面に出現して、配信可能となること。

の2点です。①ではVtuberの”顔”が配信者と対応可能であることを強調していますが、これは同時に、配信者の体とは対応できないということを意味しています。これは、今回用いるMotion Capture機能がiPhoneの機能に基づいており、顔の表情変化しか捉えられないためです。体の動きを対応させるには、Motion Capture用の本格的な機器を用いる必要があります。また、②では作製したキャラがPCのどのような画面上にも形式的には出現でき、その状態を動画形式として保存することや配信することが可能となることを意味しています。本講座では、様々な実況に適用可能な汎用性の高いVtuberキャラを目指し、その自作を行います。

本講座作製にあたって参考としたページをこちらにご紹介します。

主にBlenderに関しては、Yonaoshi3D氏の「天使のBlenderシリーズ」が体系的に解説されており、非常に有益なものとなっています。加えて、Unreal engine 4に関しては、Jun氏の「BlenderとUE4でVtuberになる方法!!」が同様に非常に有益です。ただ、これらはそれぞれ、Facerigという現在では利用不能なVtuber作製ツールを使用していたり、録画方法まではカバーしていなかったりします。そこで、本講座は録画方法までカバーしつつ、Facerigの使用を回避したVtuber作製方法について提供します。録画の際はOBS Studioを用いるのですが、この利用方法についてはEpic Games Japan 岡田氏の動画Virtual Castさんのページが参考になります。

本講座をご覧になられる方は、Blender、Unreal Engine 4、OBS Studioを事前にインストールしておきましょう。Part 0の準備編では、やるべきことはこれのみとなります。

次回以降では、これらを用いたVtuber作製方法についてより具体的に解説していきます。どんなキャラをVtuber化してみたいかについてぜひ考えてみてください!頑張っていきましょう。

(Part 1はこちら

【3Dスキャン】 REVOPOINT の使用方法

posted in: 3D Modeling, Technology | 0

今回、3Dスキャナーである REVOPOINT を用いた3Dスキャンを試みましたので、その報告です

(本記事は動画バージョンもあります!)

REVOPOINT とは

REVOPOINTとは、一般の人でも買えるような価格帯で販売されている3Dスキャナーです

スキャンする際には、原理的に赤外線を用いています

これによって、最高で0.3 mmという精度で物体をスキャンできる模様です

アプリとしては2種類用意されていますが、今回の3DスキャンにおいてはHandy Scanという一方のアプリのみ使用します

このときREVOPOINTはパソコンのUSB 3.0と接続しておきます

スキャン方法

①スキャナーの設置

スキャン方法は、上図の通りです

①REVOPOINTは付属の三脚へ固定すると楽です

②スキャン対象である物体は、付属の回転土台の中心へ設置しましょう

③Handy Scanアプリから、REVOPOINTとスキャン物体の距離が適切であるかを確かめられます。表示がベストとなることを目指して調整しましょう

②パラメータの調整

パラメータは主に2種類あります

それは、カラーカメラのパラメータと、IRカメラのパラメータです

測定対象の形状が明確に確認できるように、パラメータを調節しましょう

調節の指針が分からない場合は、自動測光にチェックを入れると良いです

ただし、自動測光にチェックを入れたままでは、これが故障の原因となるようです(マニュアルより)

よって、パラメータが自動的に調節された後は、手動調整にチェックを入れた状態としておきましょう

最後に、青色で表示される測定点群がIR画像と同一であることを確認できれば、このステップは完了です

画面に測定点群が表示されていなければ、ホームアイコンを押し、表示領域を画面の中央に戻しましょう

③スキャンファイルの新規作成

上図に従い、画面右上から3Dスキャンファイルを新規作成します

付属の回転土台やマーカーシールを用いる場合は、スキャン方法としてマーカーを選択しましょう

テクスチャーに関しては、作成する物体にもよりますが、Blender上での3Dモデル取り込み後に手動でテクスチャを作製するという手法も可能です

テクスチャを手動で作製する場合は、無色を選択しましょう

選択内容の確認後、開始をクリックすることで、3秒後にスキャンが開始します

この時点までに、回転土台が機能していることや、スキャン距離が適切であることを確認しておきましょう

④3Dスキャン

回転台を用いる場合、3Dスキャンは待つのみとなります

測定対象の点群データが完全に生成し終えるまで待ちましょう

回転台を用いない場合は、REVOPOINTを自ら運んで3Dスキャンすることとなります

異なる角度からの点群の対応が失われないように、スキャナーをゆっくり運ぶことが推奨されます

⑤3Dスキャンの停止とデータ処理

測定後は3Dスキャンを停止し、ほぼ自動で行われるデータ処理操作を行います

3Dスキャンの停止は、停止ボタンをクリックすることで可能です

これによって点群データが生成しますが、この段階ではまだ点同士が非連結状態にあります(上図上段)

そこで点同士を連結させるため、ネットワーク化処理を行います

これは、メッシュアイコンを選択することで可能です

さらにYesをクリックすることで、ネットワーク化処理が完了します(上図中段)

最後は、生成したモデルをエクスポートしましょう

.ply, .obj, .stlのいずれかの拡張子を選択できます(上図下段)

どのような形式であっても、Blenderで読み込むことが可能です

⑥Blender等ソフトへの取り込み

得られた3DモデルはBlender等といったソフトへ取り込む(インポートする)ことができます

上図はBlender画面を示していますが、この場合はファイルのインポートから、先ほど保存した形式のファイルを選択します

選択後は3DモデルがBlender上へ取り込まれているのですが、一見分かりにくい位置に生じています

マウスホイールを手前に転がすことで、見つかることが多そうです

最後に、3Dモデルを拡縮・回転させることで、任意の大きさ・アングルの3Dモデルをレンダリングできます

⑦複数モデルの合成&リトポロジー

さて、ここまででは必ずある問題を生じます

それは、一度のスキャンでは死角を解消できないということです

これは、複数角度からスキャンすることで解決することができます

上図の例では、測定対象であるクアッカワラビーの足の裏側を補うために、角度1のみならず角度2でも3Dスキャンを行っています

角度2から得られたモデルの足の裏部分を抽出し、角度1に貼り付けましょう

さらに、リトポロジーという頂点数を減らす作業を行うことによって、最終的にはスムーズなモデルとして測定対象を再構築できます

⑧スキャンした物体の使い道は色々

スキャンした物体は3Dプリンター用途でも、3DCG用途でも様々な使い道があります

今回は、スキャンしたクアッカワラビーから、新たに様々なクアッカワラビーのCGを作製することができました

1はオリジナルの状態となっておりますが、2はツッパリ、3はナルシスト、4は毒タイプ、5はケルベロスとなっています

5番のような人形が売られていたら楽しいですよね

元々のテクスチャを変えずに、ノードを利用することで1から4のように色を変える方法については、こちらの記事で解説しています

このように、3Dスキャンを用いることによって、元ある物体をコンピュータ上で再現するだけでなく、自在に改変することも容易になります

動画による REVOPOINT 使用方法の解説

本記事は動画バージョンもあります

3Dスキャン風景を動画でご覧になりたい場合は、こちらを見られることをお勧めします