UnityとnodeとMMDと

Preview:

Citation preview

Unity×node×MMD

@sters9

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

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

• 大学生

• Webサイト作成

• セキュリティ勉強中

• node.jsで稼働中のTwitterBOT

計算くん @calc_man

とは?

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

• サーバサイド

• V8エンジン

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

• イベント駆動

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

とは?

1. 公式サイトからDL

2. インストール

3. Enjoy!!

Windows/Mac/Linux AllOK!

Let's Start!

// 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/');

こんにちは世界

node app.js で起動

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

こんにちは世界

こんにちは世界

・どこからでも使いたい

npm install -g PackageName

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

npm install PackageName

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

バージョン指定可能

パッケージ管理

アプリのルートに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

とは?

とは?

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

とは?

とは?

• ゲームエンジン

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

• 統合開発環境

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

とは?

• いろんな形式に対応

fbx, max, blend, ...

jpeg, png, gif, psd, ...

mp3, wav, avi, mpg, ...

• スクリプトが書ける

C#, JavaScript, Boo

1. 公式サイトからDL

2. インストール

3. Enjoy!!

あと省略。

Let's Start!

MMDとは?

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

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

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

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

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

1. 公式サイトからDL

2. インストール

3. Enjoy!!

やっぱり省略。

Let's Start!

• Unityのゲーム画面

• Node.jsのサーバ

• MMDのモデル

もしかして・・・

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

やってみよう!

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

もしかして・・・

ネイティブアプリ??

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

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

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

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

http://wise9.jp/archives/3930

G先生に聞くと。

!!

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

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

100% JavaScript で作成可能です。

socket.io とは?

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

Unityで使える…?

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

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

Unityで使える…?

┗(☋` )┓三

Unityで使える…?

( ) ☛ ザコめ・・・

Unityで使える…?

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

ウワアアアアアアアア

Unityで使える…?

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

Unityで使える…?

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

ウワアアアアアアアア

Unityで使える…?

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

他にも沢山エラーが…

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

Unityで使える…?

ということで

案1:UnityのNetwork

案2:普通のWebSocket

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

Unityとブラウザのやり取り

• Unityからブラウザ

Applicationクラス

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

ExternalEval(実行する文字列)

• ブラウザからUnity

Unityオブジェクト

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

関数名, 渡すデータ)

Unityからブラウザへ

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

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!')");

クラスを渡すのは駄目

Unityからブラウザへ

Unityからブラウザへ

Unityからブラウザへ

ブラウザからUnityへ

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

ブラウザから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);

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

オブジェクトは渡せない

ブラウザからUnityへ

Unity×MMD MikuMikuDance For Unity !!

MFUとは?

・Unityへのインポータ

・シェーダ

・物理演算

・その他プラグイン

・ツール

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

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

MFUを使ってみる MFUの準備

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

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

MFUを使ってみる PMD Loader

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

MFUを使ってみる FixedJointに置換

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

MFUを使ってみる VMD Loader

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

MFUを使ってみる MMDIKBaker

MFUを使ってみる MMDIKBakerを使う

MFUを使ってみる MMDIKBakerを使う

MFUを使ってみる MMDIKBakerを使う

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

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

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

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

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

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

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

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

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

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

どっち!?

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

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

MFUを使ってみる 再生

MFUを使ってみる 再生

・恐怖

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

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

・再度MMDIKBakerに投げる

・VMDImporterに投げる

すると・・・ .

MFUを使ってみる できた

MFUを使ってみる できた

・原因不明

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

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

MFUを使ってみる ちなみに

でぷろいしてあります

http://go.ascii.jp/yaminabe2

今朝、某動画サイトにて

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

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

丸かぶりじゃねーか!!

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

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

大変そうだ…

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

素人さんには出来ない?

でも。

ツールたくさん!!

コンテンツたくさん!!

Unityつかってみよう!!

MFU つかってみよう!!

強引すぎワロタ…

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

改変とか転載とかとか…

ありがとうございました

Recommended