2015年2月28日土曜日

[動画編集] MMDとMovie Studioでステレオスコピック3D動画を作る

How to make the stereo 3D movie
Movie Studioはステレオスコピックによる立体視出来る動画を作ることが出来ます。MikuMikuDance(以下MMD)の動画をステレオスコピックにしてみたのでそのときの手順をまとめてみました。

環境

・Windows8.1
・Movie Stuido Platinum 12


立体に見える理由

両目で見ると距離感がつかめるのに、片目で見ると距離感が全くつかめない経験があると思います。
視野に入った映像が距離感を伴って見える理由は左目と右目で異なる角度で見ているからということに尽きます。

たとえば目の前に2人の人が並んでいたとします。
左目では近い位置ほど右に寄って見えます。すごく極端に表現すると左目で見える映像はこうなります。

右目では近い位置ほど左によって見えます。右目で見える映像はこうなります。
同じものを見ても左右それぞれの目で見える位置が左右にずれて見えるわけですが、この左右のズレのおかげで距離感のある立体映像に見えるわけです。


MMDで左目用動画と右目用動画を作る

左目用と右目用の動画を撮影するには2台のカメラを使うことになるわけですが今回はMMDを使うのでカメラは不要です。
今回MMDで作る動画はカメラの位置が固定とします。カメラのX座標は0から動かさずに作ります。

まずは普通に動画を作ってAVIファイルに書き出します。これを左目用の動画とします。(stereo_left.avi)
次に右目用の動画を作ります。(stereo_right.avi)カメラの位置をX方向に+0.1~+0.5くらいの範囲で移動して左目用動画と同じ範囲をAVIファイルに書き出します。Y軸方向-0.5度くらい回転させてもいいかもしれません。


Movie Studioで編集する

今回は赤と青の色眼鏡で立体視できる動画を作ることにします
Movie Studioを起動して新規プロジェクトを作成します。
ビデオの種類は3Dインターネットビデオとしました。

メニューの
プロジェクト - プロパティ
を開いてステレオスコピック3Dモードをアナグリフ方式に設定します。
縦横のサイズもここで指定できます。

左用・右用の動画ファイルをトラックリストに追加します。
再生位置が一致するように配置します。

トラックリストの二つのビデオクリップをShiftキーを押しながら1回ずつクリックして両方を選択した状態にします。
ビデオクリップを右クリックしてステレオスコピック3Dサブクリップとしてペア化をクリックします。

これでステレオスコピック化出来ました。


立体感の調整

付属ビデオエフェクトの「ステレオスコピック3D調整」を使うと左右の動画の水平オフセットを調整できます。
必ずしも必要ではありませんが、立体感を強調したいときや左右を入れ替えたいときに便利です。


後はレンダリングして動画ファイルに書き出せば完成です。
画像シーケンスファイルに書き出してGIMPでGIFアニメーションにすればツイッターに投稿することも出来ます。


静止画も作れます。


使用したMMDモデル

・プロ生ちゃん(暮井慧)
・湯葉式東北ずん子
・柿竹式ハンバーガー
・ネギ焼きP式葱焼町
・ガンガゼ式漁船


関連ブログ

[GIMP] GIFアニメーションの作り方
[動画編集] Movie Studio 13 でVSTプラグインを使ってみました
[Unity3D] ゲーム画面をキャプチャしてMovie Studioで動画に編集する
[Unity3D] 透視投影と平行投影を合成するには[Unity Chan]
[Android] OpenGLでシャープ製端末用3D(立体視)アプリケーションを作る

以上、参考になれば幸いです。

2015年2月21日土曜日

[CUBASE] チャンネルストリップのコンプレッサーのレイシオを調べる

How to get the threshold and the ratio of VintageCompressor
CUBASE7からミキサーがチャンネルストリップが統合されたMixConsoleに刷新されました。
チャンネルストリップはダイナミクス系のエフェクトが多数使えるようになってます。
なぜかVintageCompressorはレイシオが設定できません。
コンプレッサーというからにはレイシオは1以上∞未満の値が設定されているはずです。


環境

・Windows版CUBASE Pro 8


コンプレッサーとは何か?

CUBASE付属のコンプレッサーは音量を揃えるようにボリュームの上げ下げの操作をしてくれるようなエフェクターです。
上手に設定すれば小さい音はそのままに、音の大きい部分を小さくして音量を揃えてくれます。
人間の声は音量変化が大きく録音すると聞き取りにくくなることが多いのですが、コンプレッサーで音量を揃えると劇的に聞き取りやすくなることがあります。
コンプレッサーは聞こえ方に大きく影響するので、各社からハードウェアやDAW用プラグインが多数発売されています。


レイシオ・スレッショルドとは何か?

VintageCompressorはInputで入力された音の音量全体を調整し、Outputで音量を揃えることが出来ます。
Atackは音量が「あるレベル」を超えたら音量を下げるまでの時間、Releaseは音量が「あるレベル」を下回った時に元の音量に戻すまでの時間です。
「あるレベル」をスレッショルド(threshold)と呼びます。
レイシオ(Ratio)はスレッショルドを超えたレベルをどれくらいの比率で下げるかのパラメーターです。


スレッショルド値を調べる

VintageCompressorはスレッショルドとレイシオが公開されてません。
スレッショルドとレイシオは固定値であると仮定し、スレッショルドの値を調べるとことから始めます。
CUBASEにオーディオトラックを追加してVintageCompressorを有効にし、TestGeneratorプラグインをインサートします。

これでTestGeneratorから出力された音源がVintageCompressorを通って出力されます。
VintageCompressorのInputを0.0dBに固定して、チャンネルのメーターがTestGeneratorの出力レベルと同じになるようにOutputを調整します。
出力レベルが大きいとスレッショルドを超えてコンプレッサーがかかってしまうので-12dBで調整しました。
その結果、Outputを+3.0dBにしたら出力が同じになりました。

次にestGeneratorの出力レベルを上げてスレッショルド値を探ります。
TestGeneratorの出力を-10.50dBにすると、チャンネルのメーターが-10.6dBと表示されコンプレッサーがかかりはじめます。
TestGeneratorの出力が-10.40dBまでは出力レベルとメーターが一致します。

VintageCompressorのスレッショルドは-10.50dBと仮定します。

レイシオを探る

TestGeneratorの出力レベルを0dBまで上げたらチャンネルのメーターは-3.8dBでした。

チャンネルストリップのVintageCompressorをStandard Compressorに変更します。Standard Compressorはスレッショルドやレイシオを指定でるコンプレッサーです。
入力と出力のレベルを同じにするためにスレッショルドを最大にしてメーターを確認したところ、MakeUp Gainを+3.0dBにする必要がありました。

スレッショルドを-10.50dBに設定し、レイシオを調整してメーターのレベルが-3.8dBになる値を探します。
結果、レイシオが1.87:1の時に-3.8dBになりました。
というわけでVintageCompressorのInputが0dB、Outputが+3.0dBの時のレイシオは約1.87という結果になりました。


今回はVintageCompressorのスレッショルドとレイシオは固定と仮定しましたが、マニュアルによると「入力ゲイン設定を上げて出力ゲイン設定を下げると、圧縮幅が大きく」なるとのことです。
レイシオが2以下というのはコンプレッサーの効き具合が浅めだと思うのですが、Outputを大きくしたせいだと思います。

スレッショルドやレイシオを知っていると他のコンプレッサーでスレッショルドとレイシオを同じ設定にすればVintageCompressorに近い効果が得られると思います。
また、スレッショルドやレイシオが不明なコンプレッサープラグインについても同じ方法で調べることが出来ます。

関連ブログ

/CUBASE Pro 8を使ってみました
CUBASE Pro 8 トラブル対策
[動画編集] Movie Studio 13 でVSTプラグインを使ってみました
[CUBASE][VOCALOID] Toontrack EZmix 2 Lite を使ってみました
[VSTプラグイン] Navite InstrumentsのSupercharger
[CUBASE] グループチャンネルとFXチャンネルの違いと使い分け
[CUBASE][StudioOne] 音の遅れ(レイテンシー)の原因を探る

以上、参考になれば幸いです。

2015年2月14日土曜日

[C#] タスクトレイにバルーンチップを表示するアプリ

Balloon tips on Windows desktop
Windowsのタスクトレイにバルーンチップを表示するだけのアプリをC#で作りました。

環境

・Windows7 32bit
・Visual Studio 2010 (.NET Framework 4用アプリとして)
※Visual Studio Community 2013 でもビルドできると思います。


プロジェクトを作成する

新規プロジェクトを作成しますが、Windows フォームアプリケーションを選択します。

NotifyIconのIconプロパティに指定するアイコンの画像ファイルは
ファイル - 新規作成 - ファイル - アイコンファイル
で作ったものを使いました。

Form1.Designer.cs


Form1.cs

フォームという画面を表示するアプリですが、フォームは表示する必要がないので非表示にしています。
バルーンが消えるとアプリ終了です。


結果

実行すると下のようになります。
2秒間表示したら終了する設定にしたのですが、何かを操作して2秒後に終了するようです。


バルーンチップに表示する文字は引数で指定する

実際に使用するには引数に表示するタイトルとメッセージを指定して実行します。
まずexeファイルを作成します。
ソリューション構成をReleaseに変えてビルドします。
ビルドはソリューションエクスプローラーを右クリックして「ソリューションのビルド」です。
ビルドが終わったらソリューションエクスプローラーを右クリックして「エクスプローラーでフォルダーを開く」をクリックして
\プロジェクト名 - \Bin - \Release
のフォルダーにexeファイルが作成されているはずです。
このexeファイルを別の場所にコピーします。
今回はCドライブにBalloonというフォルダーを作ってコピーしました。

Balloon.exeに指定できる引数は "タイトルに表示する文字" "本文に表示する文字" です。
コマンドプロンプトを立ち上げて次のようにコマンドを入力します。

C:\Balloon\Balloon.exe "朝です" "おはようございます"



batファイルから起動する

テキストファイルに次の一行を保存して、拡張子をbatにするとbatファイルをダブルクリックすればバルーンチップを表示できます。



VBScript Scriptから起動する

テキストファイルに次の内容を保存して、拡張子をvbsにするとvbsファイルをダブルクリックすればバルーンチップを表示できます。


関連ブログ

[Unity3D] Visual Studio Community 2013を日本語化してUnityアプリを作る
[Android] アナログ時計アプリをライブ壁紙に改造する
[Java] SwingのUIを無限ループで更新するには
[JavaScript] XMLコンテンツをWebに表示する

以上、参考になれば幸いです。

2015年2月7日土曜日

[WordPress] UnityDogプラグインの表示サイズの指定方法

How to scale the UnityDog area
WordPressサーバーにUnityアプリを配置するため、UnityDogというプラグインを使ってみました。
http://wp.fujiu.jp/

ところがこのプラグインは表示する大きさを指定するwidthとheightの通りに表示してくれません。
常に高さが300px固定で表示されてしまいます。

原因はスタイルシートのようです。
ダッシュボードからプラグイン編集画面を開き、unitydog/unitydog.cssの編集します。
下の画像の DIV.unitydog{} 内のwidthとheightの設定が原因です。

元から設定されているwidthとheightを/* */で囲ってコメント化し、設定したい大きさを追記します。
下の例では
width; 512px;
height: 320px;
としています。

これで自分の設定通りの大きさになりました。


関連ブログ

Blogger.com(blogspot)のブログにツイッターカード(リンク先のプレビュー)を設定する
Blogger.com (blogspot) に はてなブックマークボタン を追加する
JavaScriptをWebコンテンツを見ながらデバッグする [Intenet Explorer][firefox]
HTMLのソースをWebコンテンツを見ながら素早く見つける [Internet Explorer][Firefox]
[Firefox] 消えてしまったブログのHTMLソースを復元するには

以上、参考になれば幸いです。

2015年1月31日土曜日

カレンダープログラミング プチコンテスト 2014

The calnedar programing petit contest 2014 / Transact-SQL BizBrowser
204年10月、プログラミング生放送勉強会のマスコットキャラクター・プロ生ちゃんがツイッターにこんな投稿をしました。

他の人とかぶらない内容で投稿してみました。
ニッチすぎて採用されませんでしたが。

Transact-SQL (SQL Server 2008 R2)

SQLはデータ操作言語(Data Manupilate Language)です。
プログラミング言語に必要な順次(逐次)処理・分岐処理・繰返し処理は出来ません。
なので純粋なSQLではカレンダーを表示するようなコードは書けません。
SQL ServerのTransact-SQLやOracleのPL/SQLはそれぞれメーカーが独自に開発したSQLライクなプログラミング言語です。
PL/SQLは開発環境をすぐに用意できなかったのと既に他の方が投稿されていたので、Transact-SQLで作ってみました。
テーブルやストアドは使わないので実行に特別な権限は不要だと思います。


Biz/Browser用

Axis SoftのBiz/Browserがどんなところで使われているか把握してませんが誰も応募してないので作ってみました。
JavaScriptがベースなので簡単でした。


関連ブログ

[Java] 文字列がSQL ServerのDateTime型に適合するかチェックする
オープンストリーム・Biz/Browserでアプリ開発

以上、参考になれば幸いです。

2015年1月24日土曜日

Android Studioを使ってみました

Android Studio 1.0
Android Studioは長いことベータ版の公開が続いていましたが、2014年12月に1.0が公開されたので使ってみました。

Android Studioとは

Google公式のアンドロイドアプリケーション開発環境です。IntelliJ IDEAをベースに構築されています。
Eclilpseと比べてAndroid Studioの優位な点はビルド方法の違う複数種類のapkを生成できる点などでしょうか。


環境

・Windows8.1
・Android Studio 1.0


Android Studioのインストール

Android Studioは次のリンク先からダウンロードできます。
http://developer.android.com/sdk/index.html
Windows用exeファイルをダウンロードして実行すればインストールできます。
ですが、個人的にインストーラー形式よりポータブル形式の方が好きなのでリンク先の下の方にある
android-studio-ide-(略)-windows.zip
をダウンロードして解凍して使うことにしました。

ポータブル形式を使う場合はリンク先にあるSDK Tools Onlyもダウンロードする必要があります。
SDK ToolsはEclipse用に使っていたものがそのまま使えました。


Java SE Development Kit 7 (JDK7)のインストール

Android Studioを使うにはJDK7が必要です。
インストールしてない場合はJDK7は次のリンク先からダウンロードします。
http://www.oracle.com/technetwork/jp/java/javase/downloads/jdk7-downloads-1880260.html
ライセンスに同意の上、Accept License Agreement をクリックするとダウンロードできます。
32bitならWindows x86を、64bitならWindows x64をインストールします。


Android Studioの起動

Android Studi本体は解凍したフォルダーの bin の下にあります。
32bit OSならstudio.exe、64bit OSならstudio64.exeかstudio.exeをダブルクリックで起動すると思います。

初回起動時は設定が必要です。
設定をインポートするか聞かれますがインポートする設定ファイルがないので下を選択してOK
Setup WizardはStandardで。
License Agreementはライセンスに同意したら右下のAcceptを選択してFinish。
この後Buiold-toolsの自動ダウンロードで待たされます。 JDK7がインストールされたパスを聞かれたら設定します。
64bit版Windowsに jdk-7u71-windows-x64.exe をインストールしたのなら
C:\Program Files\Java\jdk1.7.0_71
のようなパスになると思います。


Eclipseで作ったプロジェクトをインポートする

Android StudioはEclipseを作ったAndroidアプリのプロジェクトをインポートすることが出来ます。
Welcome画面でImport Non-Android Stuiod Projectをクリックすると出来ます。
ただしインポートしただけで動くEclipseプロジェクトは少なく、ほとんどはGradleの設定を変える必要があるようです。


フォントの設定を変更する

メニューの
File - Settings
を開いて
Editor - Colors & Fonts - Font
の画面を開きます。初期設定は変更できないようなので「Save As...」ボタンをクリックします。

適当なスキーマ名(SCheme name)を設定します。「MySetting」など
これでフォントの種類や大きさを変更できるようになりました。


エディターに行番号を表示する

メニューの
File - Settings
を開いて
Editor - Appearance
の show Line Numbers をオンにすると表示されます。


エディターにTabを表示する

メニューの
File - Settings
を開いて
Editor - Appearance
の Show whitespacesをオンにすると表示されます。


チュートリアル

下記リンク先にAndroid StudioでAdmobを表示するまでの手順が紹介されてます。
https://developers.google.com/mobile-ads-sdk/docs/admob/android/quick-start
英語ですがEclipseでAndroidアプリを開発したことがあれば分かる内容です。
アプリケーションの初期設定ではパッケージ名ではなくドメイン名を入力するとか、Gradleの設定を変えたら「Sync Project with Gradel Files」をクリックする必要があるなど、Eclipseとの違いが分かります。

Projectウィンドウのドロップダウンメニューで表示内容をAndroidにしないとマニフェスト(AndroidManifest.xml)が表示されないのは使いにくいですね。
マニフェストはプロジェクトウィンドウ左上をクリックしてAndroidを選択してここ

build.gradel はプロジェクトウィンドウ左上をクリックしてProjectを選択してここここか、Gradle Scriptsの下


ファイルがごっそり消える現象

Android Studioのインストールフォルダーにサブフォルダーを作ってプロジェクトを保存したら、Android Studioをアップデートした時にプロジェクトがサブフォルダーごと消えました。
アップデート時に不要なファイルがフォルダー内にあると自動的に消すようです。
そもそもプログラムフォルダーにデータを保存するのはいいことではありません。


Eclipseとの違い

ごく一部ですがEclipseと比べて戸惑った点を挙げてみました。
  • マニフェストのxmlファイルを編集するためのGUIがないらしい
  • minSdkVersionの設定変更はマニフェストとbuild.gradleの両方を買える必要がある
  • GUIのレイアウトエディターは表示するウィジットをEditModeで実行しているようで、ApplicationContextを使うメソッド(getResourcesなど)を呼び出すウィジットのサブクラスは
    The following classes could not be instantiated
    というエラー扱いになる
など



関連ブログ

[Android] Google Play Services APIを使うアプリが動かなくなった
[Android] Unable to execute dex でアプリが起動しなくなった

以上、参考になれば幸いです。

2015年1月17日土曜日

[Android] Google Play Services APIを使うアプリが動かなくなった

java.lang.NoClassDefFoundError: com.google.android.gms.ads.AdView
Could not find class com.google.android.gms.ads.AdView

今まで動作していた開発中のアプリがSDKを最新版に更新しただけで動作しなくなってしまいました。
2014年6月にAndroid SDKとAndroid Developer Toolsを最新版にして以来、Google Play Services APIを使ったアプリが全て実行時エラーを起こすようになりました。


環境

・Windows 7 / 8 / 8.1
・Eclipse Indigo / Juno / Kepler / Luna


動作しなくなったソースコード

Google Mobile Ads SDK スタート ガイド https://developers.google.com/mobile-ads-sdk/docs/?hl=ja の手順通りに作ったアプリを実行すると

adView = new AdView(this);

のところで次のようなエラーが起きます。
※Androidのバージョンや端末によってはエラーの内容が異なることがあるようです。



結論

Android Studioでビルドしたら正常に実行できるようになりました。
エラーを起こさない方法は引き続き調べますが、これを機会にAndroid Studioに乗り換えることにしました。


Eclipseで試したけどダメだったこと

プログラマー向けの質問投稿サイトStack Overflowなどを参考に色々試しました。
次のうちどれかを適用したら動くようになったという報告がいくつかあるのですが自分の環境ではすべてダメでした。
  • Android SDK Build-tools Rev.20以降をインスト-する→EclipseがExceptionWithContextを起こしてビルドできない
  • プロジェクトのlibsフォルダーにgoogle-play-service_lib.jarをコピーする
  • ビルドパスにgoogle-play-service_lib.jarを指定し順序及びエクスポートにgoogle-play...をチェックする
  • ワークスペースを初期化する
  • EclipseとAndroid SDKを再インストールする
  • 新しいEclipse (indigoやluna)に乗り換える
  • Ant1.9.4をインストールしてEclipse付属のAntを使わない設定にする
  • プロジェクト・ビルド・ターゲットをGoogle APIsに変更する
  • 仮想デバイスマネージャーでエミュレーターを作り直す
  • Google開発者サービスがインストールされている実機で動かしてみる
  • 下のフォルダーを削除ししてEclipseとAndroid SDKを初期化する
    %USERPROFILE%\.android
    %USERPROFILE%\.eclipse
他にも色々試しましたが何をやってもエラーが起きました。


Google APIsが必要らしい

原因を調べるうちに動作環境が昔と変化している点がありました。
Adding SDK Packages のページ
http://developer.android.com/sdk/installing/adding-packages.html
によると、
Note: Google Play services APIs are not available on all Android-powered devices,
but are available on all devices with Google Play Store.
To use these APIs in the Android emulator,
you must also install the the Google APIs system image from the latest Android X.X directory in the SDK Manager.
とあります。
どうやらはGoogle APIsをインストールしないと動作しなくなったようです。


特定のAndroidエミュレーターでは動かなくなったらしい

もう一つ変化している点がありました。
Adding SDK Packages のページでは
To use these APIs in the Android emulator,
you must also install the the Google APIs system image from the latest Android X.X directory in the SDK Manager.
とあります。

Setting Up Google Play Servicesのページ
https://developer.android.com/google/play-services/setup.html?hl=ja
によると、
The Android emulator with an AVD that runs the Google APIs platform based on Android 4.2.2 or higher.
とあります。
Android SDK付属のAVD ManagerではAndroidエミュレーターを作ることが出来ますが、Target NameやAPI Levelなど様々な組み合わせを指定する必要があります。
どうやらAPI Levelが17以上のGoogle APIsのエミュレーターでしか動作しなくなったようです。


2014年12月にバージョン1.0.0が公開されたAndroid StudioではGoogle Play Services AIPを使ってエラーなく動作させることが出来ました。
「ウチのEclipseはGoogle Play Services APIでエラーは出ない」という開発者もいらっしゃるかと思いますが、Android自体が変化し続けているのでEclipseからAndriod Studioに乗り換えることにしました。


関連ブログ

[Ecipse] Unable to execute dex でアプリが起動しなくなった
[Ecipse] マニフェストに表示される警告(黄色三角のエクスクラメーションマーク)
[Android] アプリからツイートするとハッシュタグが消える(URLエンコード漏れ)
[Unity3D] Visual Studio Community 2013を日本語化してUnityアプリを作る

以上、参考になれば幸いです。