• Stars
    star
    446
  • Rank 97,888 (Top 2 %)
  • Language
    C++
  • License
    MIT License
  • Created about 7 years ago
  • Updated over 5 years ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

tweak vertices and generate blend shapes in Unity

Blend Shape Builder & Vertex Tweaker

English (by Google Translate)
demo

Unity 上で blend shape を作成するツールです。既存のモデルの合成はもちろん、Unity 上で頂点を編集してそれを blend shape 化することもできます。
また、頂点の位置だけ、法線だけの合成といった特殊な blend shape ターゲットも生成でき、既存の blend shape をターゲットごとに別個の Mesh として書き出す機能なども備えています。

Unity 2017.1 系以上、Windows (64bit) or Mac、D3D11 世代以降の Graphics API の環境で動作します。 (ターゲットプラットフォームが Standalone ではない場合、D3D9 世代に機能が限定されて正常動作しなくなることがあるのでご注意ください)

使い方

  • BlendShapeBuilder.unitypackage をプロジェクトにインポート

    • Unity 2018.3 以降の場合、このリポジトリを直接インポートすることもできます。プロジェクト内にある Packages/manifest.json をテキストエディタで開き、"dependencies" に以下の行を加えます。

    "com.utj.blendshapebuilder": "https://github.com/unity3d-jp/BlendShapeBuilder.git",

  • Window メニューに "Blend Shape Builder" と "Blend Shape Inspector" と "Vertex Tweaker" が追加されます。
    Blend Shape Builder が blend shape をオーサリングするツール、Vertex Tweaker が頂点の編集を行うツール、Blend Shape Inspector は既存の blend shape を調べたりデータを抽出したりするツールです。

Blend Shape Builder

Blend Shape Builder のウィンドウを開いた状態で MeshRenderer もしくは SkinnedMeshRenderer を持つオブジェクトを選択すると "Add BlendShapeBuilder" というボタンが出てくるので、それでコンポーネントを追加します。
BlendShapeBuilder

blend shape のターゲットとなるオブジェクトは、Mesh アセットもしくは MeshRenderer か SkinnedMeshRenderer を持つ GameObject を設定します。(頂点数が同じである必要があります)

  • "Find Targets" ボタンを押すと、現在のシーン内にある Base Mesh と同じ頂点数のモデルを探して選択状態にします。

  • "BlendShapes" にモーフターゲットとなるオブジェクトを指定していきます。

    • 既存の Mesh をターゲットに登録したい場合、それらを Drag & Drop します。 "▼ BlendShapes" の部分にオブジェクトを Drag & Drop すると、放り込んだオブジェクト毎に BlendShape が生成されます。
      各 BlendShape のフォールド部分 (上図の "▼ NewBlendShape0" など) にオブジェクトを Drag & Drop するとその BlendShape のフレームとして登録されます。

    • "+" ボタンでフレームを追加すると、フレームが追加されると共にそれに対応する Mesh が生成されます。

    • "Edit" を押すと、そのフレームの Mesh の編集に移行します。(後述の Vertex Tweaker が開きます)

    • V,N,T のチェックは Vertex, Normal, Tangent の略で、その要素を含めるかの指定になります。例えば Normal のみをチェックした場合、頂点の移動はせず法線だけが変わる BlendShape になります。

  • "Update Mesh" を押すと現在の Mesh を直接更新します。 "Generate New Asset" は現在の Mesh には手を加えず、新しいアセットとしてエクスポートします。 "Preserve Existing BlendShapes" をチェックしておくと、Mesh が既に blend shape を持っていた場合にそれを持ち越しつつ追加します。(同名の BlendShape があった場合新しい方で上書きします)

Vertex Tweaker

頂点を編集するツールです。Skinning された Mesh の編集もサポートしており、blend shape 用に限らずモデルを微調整したい場合全般に使えます。ただし、できるのはあくまで頂点の移動のみであり、頂点の増減など (いわゆるトポロジーが変化する操作) はできません。

  • Edit -> Move, Rotate, Scale はその名の通り頂点の移動、回転、拡縮を行うモードです

  • Edit -> Assign はいわゆる数値入力です。XYZ 軸別にマスクをかけられるので、例えば球体の下半分を選択し Y だけチェックして 0 を入力することで半球にする、といった使い方ができます。

  • Edit -> Projection は他のモデルに対して頂点の投影を行うモードです。各頂点からレイを飛ばし、対象モデルに当たった地点に移動させます。頂点数が全く合わないモデルに対するモーフィングを実現できます。

  • Select は頂点の選択に関するオプションです。矩形選択、投げ縄選択、ブラシ選択といった一般的な選択方法や、選択中の頂点と繋がった頂点郡 (Connected)、ポリゴンの切れ目上にある頂点 (Edge, Hole) の選択なども備えています。

  • Misc -> Mirroring で方向を選択すると、ミラーリングが有効になります。(対称なモデルである必要があります)

  • Misc -> Normals および Tangents は法線と接線の再計算のオプションです。手動で編集した法線があってそれを維持したい場合、"Manual" に変えて自動計算は行わないようにする必要があるでしょう。そうでない場合はデフォルトで問題ないはずです。

  • Shift を押しながらの選択は選択の足し算、Ctrl を押しながらだと選択の引き算になります。

注意点

  • インポートした Mesh に対する編集
    fbx ファイルなどからインポートした Mesh はプロジェクトを開くたびに再生成が行われます。このため、インポートした Mesh に対する編集は、そのままではプロジェクトを開き直すとリセットされてしまいます。
    この対策として、インポートした Mesh を含む GameObject に "Add BlendShapeBuilder" した場合、元の Mesh のコピーを作成して MeshRenderer や SkinnedMeshRenderer の mesh をそれに差し替えます。 また、Blend Shape Builder の "Generate New Asset" や Vertex Tweaker の "Export -> Export .asset" は、編集中のモデルを独立したアセットとしてエクスポートします。元の Mesh を変えたくない場合はこのコマンドで一度別アセットとして保存し、そちらを編集するといいでしょう。

  • DCC ツール上では一致していた頂点数が Unity 上では一致しない場合
    Blend Shape のターゲットは頂点の数と順番が元モデルと一致している必要があります。しかし、DCC ツール上では一致していても Unity にインポートする際に変換処理によって変わってしまうことがあります。これは主に以下のような場合に起こりえます:

    • 不連続な法線 (=ハードエッジ) がある
    • UV がモデル毎に異なり、かつ不連続な UV がある
    • 面毎に違うマテリアルを割り当てている

    例えばメタセコイアの場合、これを回避するには、スムージング の 角度 を 180 にしてハードエッジを回避し、全モデルで同じ UV を使用し (そもそも Unity の Blend Shape は UV の変化はサポートしていません)、マテリアルは 1 オブジェクトにつき 1 種のみにする必要があります。

関連ツール

  • NormalPainter - 法線を編集するツールです。
  • FbxExporter - Mesh を fbx 形式でエクスポートするツールです。skinning や blend shape もサポートしています。

License

MIT

More Repositories

1

UnityChanToonShaderVer2_Project

UnityChanToonShaderVer2 Project / v.2.0.9 Release
ShaderLab
3,765
star
2

MeshSync

A package for synchronizing meshes/models editing in DCC tools into Unity in real time.
C#
1,569
star
3

unitychan-crs

Unity-Chan "Candy Rock Star" Live Demo
C#
1,256
star
4

FrameCapturer

export framebuffer, GBuffer or any RenderTextures from Unity to file. supported format: png, exr, gif, webm, mp4
C++
1,042
star
5

NormalPainter

vertex normal editor for Unity
C++
711
star
6

Project_TCC

TCC stands for Tiny Character Controller. TCC is the best way to make your own game. This repository contains all packages and examples for TCC projects.
C#
499
star
7

UnityChanSpringBone

UnityChan Sping Bone System for lightweight secondary animations
C#
495
star
8

AnimeToolbox

393
star
9

NVIDIAHairWorksIntegration

NVIDIA Hair Works Integration for Unity
C#
387
star
10

USDForUnity

USD importer & exporter plugin for Unity
C++
299
star
11

StreamingImageSequence

A package for playing sequential image sequences in Unity Timeline
C#
258
star
12

RaytracedHardShadow

DXR based raytraced hard shadow for Unity
C++
247
star
13

FbxExporter

export meshes to .fbx or .obj from Unity
C++
207
star
14

AnotherThread

Sample game for Unite 2016 Tokyo.
C#
182
star
15

WaveShooter

Demo for Unite 2017 Tokyo
C#
177
star
16

FirstTutorial

171
star
17

ProfilerReader

The library that read Unity profiler binary log directly
C#
143
star
18

playgrownd

Free Unity assets for level design
C#
137
star
19

Unity-ROS-MobileRobot-UI-Tutorial

本教材は Unity と ROS を組み合わせたロボット開発のための入門用教材です。
C#
126
star
20

WebGLNativeInputField

WebGLでIME入力を可能にします
C#
96
star
21

fuze-vj-kit

VJKit for fuZe
C#
90
star
22

BoidComputeShader

Boid implementation using Compute Shader
C#
82
star
23

OpenToonzPluginForUnity

OpenToonzPlugin for Unity
C++
54
star
24

UnityChanBallRoll

Unity-chan's Ball a Roll demo project
C#
52
star
25

UnityChanSSU

UnityChan Sunny Side Up! Style for Unity
50
star
26

DojoUI1

Unity道場「モダンなUIの提案と実装」
C#
48
star
27

SeparatedAssetBundleBuild

Workaround for long time to build many AssetBundles.
C#
44
star
28

SurfingGame

Unity tutorial game project with Oculus Rift.
C#
41
star
29

AngryChicken

C#
41
star
30

piranhan

「ピラニアン」 ("Piranhan") - Retro-style 2D shooting game made with Unity
C#
41
star
31

CppScript

C++
39
star
32

AnotherThreadVR

C#
37
star
33

TweetMedia

C++
34
star
34

Unite2016TokyoWS01

Unite 2016 Tokyo のトレーニングデイで開催される、Unity サービスに関するワークショップで使用されるプロジェクトです。
C#
32
star
35

ShootingGame

シューティングゲーム(ハンズオン用)
C#
30
star
36

DynamicPluginSample

Dynamic load/unload plugin on Editor sample.
C#
26
star
37

unitychan2d

C#
26
star
38

XmlToCustomAsset

XMLからカスタム形式のアセットデータを作成して利用するサンプル
22
star
39

ProBuilderWorkshop

ProBuilderを使ったワークショップ用
C#
19
star
40

UnityChanKAGURA

UnityChan KAGURA
16
star
41

TEMPRUN

C#
12
star
42

unityads-help-jp

Unity Ads ヘルプ
10
star
43

NativeVertexCache

C++
9
star
44

webplayer-templates

UnityのWebPlayerTemplate集(UnityChan)
C#
8
star
45

BacktraceUnitySample

C#
8
star
46

LearnSubtitles

Subtitle SRT files of Learn in unity3d.com - for English/Japanese localization.
SRecode Template
6
star
47

example-customcharset

Custom character set を使った TrueType フォントインポートの例。
JavaScript
5
star
48

FontAdjust

Unity5.3系→5.4等に移行すると、UI.Textが Y方向にずれてしまうため、それを解決するツールを作りました
C#
4
star
49

EDIX-sample

C#
3
star
50

learn-subtitles

This is repository of subtitles of Unity Learn Videos (http://unity3d.com/learn/)
Ruby
3
star
51

DojoParticle

2016年 2/21に行われたUnity道場用のサンプルデータです
C#
3
star
52

First-Unity-Example

JavaScript
3
star
53

move-test

1
star
54

unite-japan-subtitles

Subtitles of Unite Japan video
1
star
55

inter-high-webplayer-templates

HTML
1
star