【Unity】オブジェクトにマウスで色を塗る方法「RealTime Painting」

投稿者: | 2018年10月30日

前回の記事

【Teddy】ゲーム実行中に好きな色の3Dモデルを作製する方法

 

 

 

 

 

フィア
カレン~、「Teddy」で作ったオブジェクトに

色ってどうやって塗ればいいのかな?

カレン
う~ん…、Unity の Scene 上では 簡単にできるんだけど、

現状、ゲーム中の画面から色を塗ることはできないみたい

フィア
そうなんだ…どうしたらいいのかなぁ…
カレン
とにかく、今使える無料アセットで試してみましょうか
カレン
今回使うのは「RealTime Painting」だよ

 

RealTime Painting

https://assetstore.unity.com/packages/templates/tutorials/realtime-painting-33506

フィア
あっ、なんかそれっぽい!
カレン
使い方はこんな感じね

 

公式サイト CodeArtist.mx

Texture Painting

カレン
ただ、使用にはいくつかの条件があるみたい

1、3Dモデルにしか使えない

2、メッシュにRender texture を取り付ける必要がある

3、Render texture を映すカメラが必要

フィア
カレン…この条件、日本語なのに読めないよ…
カレン
半分くらい英語と専門用語だね
カレン
私もシェーダーとかテクスチャ関連は詳しいわけではないから

上手くいくか分からないけど、とにかくやってみましょうか

フィア
Google 翻訳は必需品だよっ!

 

 

 

RealTime Painting でオブジェクトに色を塗る

カレン
今回もインポートしたフォルダに入っている

Demoシーンを使っていくわよ

フィア
これがジェネリックってやつだね!
カレン
プログラミングの世界ではちょっと意味が違うんだけどね

RealTime Painting をAsset Storeからインポートすると、Asset/Resourcesフォルダの中にTexturePainter ( Place Me Out of Resources)とTexturePainter-Instancesが生成されます。

TexturePainter ( Place Me Out of Resources)の中にあるMainシーンを開いてください。すると、上のような画面になります。

これを実行すると、クジラに色が塗れると思います。

 

 

設置したオブジェクトに色を塗る方法

・設置したCubeに色を塗ってみる

GameObject > 3D Object > Cube で Cube を生成し、Position を (x, y, z) = (0, 0, 0) 付近に持っていきます。

 

 

 

 

 

フィア
あれ? これを実行してもCubeに色が塗れないよ?
カレン
う~ん、Render Texture を設置する必要があるんじゃないかしら

 

 

Render Texture の設置

Render Textureの置き場所はどこでもいいのですが、今回はAsset/Textureフォルダを作成してください。

次に、Assets > Create > Render Texture を作成し、名前をCube.renderTextureとしてください。

これを_DynamicCanvas/CanvasCamera のCamera コンポーネント内のTarget Texture に入れてください。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

続いて、Assets > Material フォルダを作成し、フォルダ内で右クリックしてCreate > Material で作成して、Cube.matとします。

Cube.mat をクリックしてInspectorを開き、AlbedoにCube.renderTextureをセットしてください。

このMaterial をCubeオブジェクトにドラッグして取り付けます。

すると、Cubeの側面にクジラの体に書いてある文字と同じものがペイントされたと思います。

これでゲームを実行すると、Cubeに色を塗ることはできるのですが、マウスカーソルと塗られる位置が一致しません。

この原因はおそらくTexture とマウスカーソルの位置が上手く対応していないからだと思います。

 

そもそも、このシーンでは以下のような配置になっています。

 

 

 

 

 

 

 

 

 

 

CanvasCamera で映したものをCube のRender Texture に反映させています。

下の動画を見てもらえれば分かりやすいと思います。

 

つまり、CanvasCamera で映っているRender Textureの座標とマウスカーソルとの座標を上手く対応させられれば思い通りの色が塗れると思います。

 

しかしながら、今回は上手くいかなかったので、後日、別の方法を試していこうと思います。

今のところ、他に使えそうなアセットは、ESさんが開発した「Ink Painter」くらいですかね。

https://assetstore.unity.com/packages/tools/particles-effects/ink-painter-86210

 

 

 

まとめ

・RealTime Painting を使えばオブジェクトに色を塗ることは可能だが、Render Textureの座標とマウスカーソルとの座標を上手く対応させることができなかった。

フィア
う~ん、なんだか煮え切らない感じになっちゃったね…
カレン
まぁ、論文じゃないし、こういう失敗談もいいんじゃないかしら

誰かが引き継いでくれたり、ヒントくれるかも知れないしね

フィア
みんなこういう失敗を積み重ねた上での成功だからね
カレン
次回はTeddyで描いた絵をボーンに取り付けてみようと思うわ
フィア
こう、ご期待!

 

 

関連記事

描いたオブジェクトの色を変える方法

作成した手書きのオブジェクトの色を変える方法と、オブジェクトの重力や物理演算の操作方法を紹介します。

 

描いたオブジェクトをキャラに取り付ける方法

作成したオブジェクトをキャラの子オブジェクトにすることで、武器のように持たせる方法を紹介します。

 

すくまりゲームズの人気記事