91
Unity×node×MMD @sters9 2012/09/15 第二回 闇鍋プログラミング勉強会

UnityとnodeとMMDと

Embed Size (px)

Citation preview

Page 1: UnityとnodeとMMDと

Unity×node×MMD

@sters9

2012/09/15 第二回 闇鍋プログラミング勉強会

Page 2: UnityとnodeとMMDと

自己紹介 a • ごみばこ @sters9

• 大学生

• Webサイト作成

• セキュリティ勉強中

• node.jsで稼働中のTwitterBOT

計算くん @calc_man

Page 3: UnityとnodeとMMDと
Page 4: UnityとnodeとMMDと

とは?

_人人人人人人人_ > JavaScript <  ̄^Y^Y^Y^Y^Y^Y^ ̄

Page 5: UnityとnodeとMMDと

• サーバサイド

• V8エンジン

• ノンブロッキングI/O

• イベント駆動

• パッケージ/モジュール管理

とは?

Page 6: UnityとnodeとMMDと

1. 公式サイトからDL

2. インストール

3. Enjoy!!

Windows/Mac/Linux AllOK!

Let's Start!

Page 7: UnityとnodeとMMDと

// app.js

var http = require('http');

http.createServer(function (req, res) {

res.writeHead(200, {'Content-Type': 'text/plain'});

res.end('Hello World ¥n');

}).listen(1337, "127.0.0.1");

console.log('Server running at http://127.0.0.1:1337/');

こんにちは世界

Page 8: UnityとnodeとMMDと

node app.js で起動

ブラウザで http://127.0.0.1:1337/ を開く

こんにちは世界

Page 9: UnityとnodeとMMDと

こんにちは世界

Page 10: UnityとnodeとMMDと

・どこからでも使いたい

npm install -g PackageName

・アプリ内だけで使いたい

npm install PackageName

パッケージの後ろに"@バージョン"で

バージョン指定可能

パッケージ管理

Page 11: UnityとnodeとMMDと

アプリのルートにpackage.jsonを配置

パッケージ管理

{ "name": "example-app" , "version": "0.0.1" , "private": true, "dependencies": { "express": "2.3.11" , "jade": ">= 0.0.1" , "socket.io": "0.6.18" } }

“dependencies”を編集して

npm install

でもOK

Page 12: UnityとnodeとMMDと

とは?

Page 13: UnityとnodeとMMDと

とは?

<(^o^)>┌┛’,;’;≡三

Page 14: UnityとnodeとMMDと

とは?

Page 15: UnityとnodeとMMDと

とは?

• ゲームエンジン

• マルチプラットフォーム

• 統合開発環境

• 十分使えるフリー版!!

Page 16: UnityとnodeとMMDと

とは?

• いろんな形式に対応

fbx, max, blend, ...

jpeg, png, gif, psd, ...

mp3, wav, avi, mpg, ...

• スクリプトが書ける

C#, JavaScript, Boo

Page 17: UnityとnodeとMMDと

1. 公式サイトからDL

2. インストール

3. Enjoy!!

あと省略。

Let's Start!

Page 18: UnityとnodeとMMDと

MMDとは?

Page 19: UnityとnodeとMMDと

MMDとは? • 3DCG動画作成ツール

• モーションが付けられる

• エフェクトが付けられるらしい

• Kinectとかリップシンクロとかできるらしい

• 有志制作のモデルが豊富

Page 20: UnityとnodeとMMDと

1. 公式サイトからDL

2. インストール

3. Enjoy!!

やっぱり省略。

Let's Start!

Page 21: UnityとnodeとMMDと

• Unityのゲーム画面

• Node.jsのサーバ

• MMDのモデル

もしかして・・・

Page 22: UnityとnodeとMMDと

簡単にMMORPG(もどき)が作れるんじゃ!?

やってみよう!

(ここで闇鍋の具材になってしまった)

もしかして・・・

Page 23: UnityとnodeとMMDと

ネイティブアプリ??

ダウンロードやインストールが面倒!

Page 24: UnityとnodeとMMDと

Webアプリ? 通信できるのかな?

HTTPで淡々と。 サーバからのプッシュ配信が難しい

Cometでできる…けど別の問題が…

Page 25: UnityとnodeとMMDと

http://wise9.jp/archives/3930

G先生に聞くと。

Page 26: UnityとnodeとMMDと

!!

Page 27: UnityとnodeとMMDと

Socket.IO は複数の通信メカニズムを抽象化することで、 全てのブラウザ、デバイスでリアルタイムアプリを実装可能にするために開発されました。

とても手軽にリアルタイムなアプリを

100% JavaScript で作成可能です。

socket.io とは?

Page 28: UnityとnodeとMMDと

( ^o^) socket.ioすげえええええ

Unityで使える…?

Page 29: UnityとnodeとMMDと

( ˘⊖˘) 。o( もしかしてクライアントは

そのまんまUnityでも使えるんじゃ…? )

Unityで使える…?

Page 30: UnityとnodeとMMDと

┗(☋` )┓三

Unityで使える…?

Page 31: UnityとnodeとMMDと

( ) ☛ ザコめ・・・

Unityで使える…?

Page 32: UnityとnodeとMMDと

▂▅▇█▓▒░('ω')░▒▓█▇▅▂

ウワアアアアアアアア

Unityで使える…?

Page 33: UnityとnodeとMMDと

ちなみにソースを見ると・・・

Unityで使える…?

Page 34: UnityとnodeとMMDと

▂▅▇█▓▒░('ω')░▒▓█▇▅▂

ウワアアアアアアアア

Unityで使える…?

Page 35: UnityとnodeとMMDと

というわけで諦めます ✌('ω')✌

他にも沢山エラーが…

そもそもWebSocketが無いと駄目じゃ…

Unityで使える…?

Page 36: UnityとnodeとMMDと

ということで

案1:UnityのNetwork

案2:普通のWebSocket

案3:Unity←(データ)→ブラウザ

Page 37: UnityとnodeとMMDと

Unityとブラウザのやり取り

• Unityからブラウザ

Applicationクラス

ExternalCall(関数名, 渡すデータ…)

ExternalEval(実行する文字列)

• ブラウザからUnity

Unityオブジェクト

SendMessage(ゲームオブジェクト,

関数名, 渡すデータ)

Page 38: UnityとnodeとMMDと

Unityからブラウザへ

// ブラウザ側 JavaScriptで記述 function position() { console.log(arguments); }

Page 39: UnityとnodeとMMDと

Unityからブラウザへ

// Unity側 C#で記述 Application.ExternalCall("position", 0, 0, 0); var p = new Dictionary<string, int> () { {"x", 0}, {"y", 0}, {"z", 0} }; Application.ExternalCall("position", p); var p2 = new pos(); p2.x = 0; p2.y = 0; p2.z = 0; Application.ExternalCall("position", p2); Application.ExternalEval("alert('Hi!')");

Page 40: UnityとnodeとMMDと

クラスを渡すのは駄目

Unityからブラウザへ

Page 41: UnityとnodeとMMDと

Unityからブラウザへ

Page 42: UnityとnodeとMMDと

Unityからブラウザへ

Page 43: UnityとnodeとMMDと

ブラウザからUnityへ

// Unity側 C#で記述 void getData(string x) { guiText.text = x; } void getData2(object x) { guiText.text += "¥n" + x.ToString(); }

Page 44: UnityとnodeとMMDと

ブラウザからUnityへ // ブラウザ側 JavaScriptで記述 setTimeout(function() { var unity = GetUnity(); if(unity == null) return; unity.SendMessage('GUI Text', 'getData', "its test"); unity.SendMessage('GUI Text', 'getData2', "message"); unity.SendMessage('GUI Text', 'getData', 12345); unity.SendMessage('GUI Text', 'getData2', 67890); unity.SendMessage('GUI Text', 'getData', [1,2,3]); unity.SendMessage('GUI Text', 'getData2', [4,5,6]); unity.SendMessage('GUI Text', 'getData', {x:1}); unity.SendMessage('GUI Text', 'getData2', {y:2}); }, 5000);

Page 45: UnityとnodeとMMDと

型にあったメソッドしか呼ばれない

オブジェクトは渡せない

ブラウザからUnityへ

Page 46: UnityとnodeとMMDと

Unity×MMD MikuMikuDance For Unity !!

Page 47: UnityとnodeとMMDと

MFUとは?

・Unityへのインポータ

・シェーダ

・物理演算

・その他プラグイン

・ツール

・ここでは r116 を使ってます。

・SourceForgeからDLできるものはr114

Page 48: UnityとnodeとMMDと

MFUを使ってみる MFUの準備

Page 49: UnityとnodeとMMDと

MFUを使ってみる 博麗の巫女

Page 50: UnityとnodeとMMDと

MFUを使ってみる ファイルの用意

Page 51: UnityとnodeとMMDと

MFUを使ってみる PMD Loader

Page 52: UnityとnodeとMMDと

MFUを使ってみる 表示すると・・・

Page 53: UnityとnodeとMMDと

MFUを使ってみる FixedJointに置換

Page 54: UnityとnodeとMMDと

MFUを使ってみる 確認してみる

Page 55: UnityとnodeとMMDと

MFUを使ってみる VMD Loader

Page 56: UnityとnodeとMMDと

MFUを使ってみる 動きがおかしい…

Page 57: UnityとnodeとMMDと

MFUを使ってみる MMDIKBaker

Page 58: UnityとnodeとMMDと

MFUを使ってみる MMDIKBakerを使う

Page 59: UnityとnodeとMMDと

MFUを使ってみる MMDIKBakerを使う

Page 60: UnityとnodeとMMDと

MFUを使ってみる MMDIKBakerを使う

Page 61: UnityとnodeとMMDと

MFUを使ってみる 再度確認…

Page 62: UnityとnodeとMMDと

MFUを使ってみる ミクダヨ-

Page 63: UnityとnodeとMMDと

MFUを使ってみる インポート

Page 64: UnityとnodeとMMDと

MFUを使ってみる インポート

Page 65: UnityとnodeとMMDと

MFUを使ってみる モーションの使い回し

Page 66: UnityとnodeとMMDと

MFUを使ってみる モーションの使い回し

Page 67: UnityとnodeとMMDと

MFUを使ってみる 動かない…

Page 68: UnityとnodeとMMDと

MFUを使ってみる VMDLoaderに入れて…

Page 69: UnityとnodeとMMDと

MFUを使ってみる Assetが出来た

Page 70: UnityとnodeとMMDと

MFUを使ってみる ちなみに…

どっち!?

Page 71: UnityとnodeとMMDと

MFUを使ってみる おまけ: VMDLoaderScript.cs

Page 72: UnityとnodeとMMDと

MFUを使ってみる おまけ: VMDLoaderScript.cs

Page 73: UnityとnodeとMMDと

MFUを使ってみる 再生

Page 74: UnityとnodeとMMDと

MFUを使ってみる 再生

・恐怖

・肩?腕?使い回しだからかちょっとおかしい

・MMDIKBakerに掛ける前のモノをMMDで修正

・再度MMDIKBakerに投げる

・VMDImporterに投げる

すると・・・ .

Page 75: UnityとnodeとMMDと

MFUを使ってみる できた

Page 76: UnityとnodeとMMDと

MFUを使ってみる できた

・原因不明

・PMDEditor付属のVMDViewでFixするとできた

Page 77: UnityとnodeとMMDと

MFUを使ってみる 今度こそできた

Page 78: UnityとnodeとMMDと

MFUを使ってみる ちなみに

Page 79: UnityとnodeとMMDと
Page 80: UnityとnodeとMMDと

でぷろいしてあります

http://go.ascii.jp/yaminabe2

Page 81: UnityとnodeとMMDと

今朝、某動画サイトにて

Page 82: UnityとnodeとMMDと

!! ,. -‐'''''""¨¨¨ヽ (.___,,,... -ァァフ| |i i| }! }} //| |l、{ j} /,,ィ//| i|:!ヾ、_ノ/ {:}//ヘ |リ } ,ノ _,!V,ハ | /´fト、_{ル{,ィ'eラ , タ人 /' ヾ|宀| {´,)⌒`/ |<ヽトiゝ ,゙ / )ヽ iLレ | | ヾlトハ〉 |/_/ ハ !ニ⊇ '/:} V:::::ヽ // 二二二7'T'' / __ /:::::::/`ヽ /'´r -―一ァ‐゙T´ '"´ /::::/-‐ \ / // 广¨´ /' /:::::/´ ̄`ヽ ⌒ヽ ノ ' / ノ:::::`ー-、___/:::::// ヽ } _/`丶 /:::::::::::::::::::::::::: ̄`ー-{:::... イ

あ・・・ありのまま 今起こった事を話(略

Page 83: UnityとnodeとMMDと

丸かぶりじゃねーか!!

Page 84: UnityとnodeとMMDと

一応:あちらとは 関係ありません。

DXライブラリならC++かなあ…

大変そうだ…

Page 85: UnityとnodeとMMDと

ゲーム作りは何を使っても 大変…

Page 86: UnityとnodeとMMDと

素人さんには出来ない?

Page 87: UnityとnodeとMMDと

でも。

Page 88: UnityとnodeとMMDと

ツールたくさん!!

コンテンツたくさん!!

Page 89: UnityとnodeとMMDと

Unityつかってみよう!!

MFU つかってみよう!!

強引すぎワロタ…

Page 90: UnityとnodeとMMDと

でも規約に気をつけて!!

改変とか転載とかとか…

Page 91: UnityとnodeとMMDと

ありがとうございました