2016年7月23日土曜日

CLIP STUDIO版 クエリちゃん 3Dモデルのファイルを公開しました

Query-chan model for CLIP STUDIO has been published

ポケットクエリーズがUnityアセットとして公開しているキャラクター「クエリちゃん」の3Dモデルを改変しCLIP STUDIOに移植したので ファイルを公開しました。
このファイルをCLIP STUDIOの素材に登録すると「クエリちゃん」をCLIP STUDIO PAINTでイラストやマンガの3Dモデルとして利用できます。
blog.fujiu.jp CLIP STUDIO版クエリちゃんのファイルを公開しました
関連ブログ CLIP STUDIO PAINT を使ってみました
未確認ですがCLIP STUDIO ACTIONでCG動画の作成にも利用できるようです。


なぜ「素材をさがす」に出品しないのか

CLIP STUDIOには素材の出品や購入ができる「素材をさがす」というエコシステムがあります。
このブログを書いている時点で「素材をさがす」はクリエイティブ・コモンズ・ライセンス作品の取扱いに対応していません
「素材をさがす」は出品者への報酬制度があるため今後もクリエイティブ・コモンズ・ライセンスに対応しないと個人的に推測しています。

「クエリちゃん」は誰でもどのような目的でも無償で使えるクリエイティブ・コモンズ・ライセンス (CC-BY) に基づいて配布されるため、ファイルを独自に公開することにしました。


ダウンロード

OneDriveからダウンロードできます。



CLIP STUDIO版クエリちゃんを素材に登録する方法

  1. ファイルをダウンロードし Query-chan.c2fc を展開します。
  2. CLIP STUDIOを起動し、COORDINATEを起動します。
    COORDINATEは無料で利用できます。
  3. CLIP STUDIO COORDINATE の
    ファイル - 開く
    から展開した Query-chan.c2fc を開きます。
  4. CLIP STUDIO COORDINATE の
    ファイル - 素材として登録
    でCLIP STUDIOの素材に登録できます。
  5. CLIP STUDIO PAINT の3Dのキャラクターの中に登録されます。
  6. 素材から削除する場合はCLIP STUDIOの素材のクエリちゃんを選択して削除ボタンをクリックします。


制限

CLIP STUDIOの仕様により次の制限があります。
  1. 標準衣装の腕輪やスカートが透けないことがあります。
    ※ 透けて見えるのが正常です。
  2. 髪や衣装の一部が黒く表示されることがあります。
    ※ CLIP STUDIO COORDINATE では輪郭線を非表示に、カリング設定を「カリングしない」にすると正常に表示されます。


使い方

Windows 10のCLIP STUDIO PAINT PRO 1.5.6で動作確認しました。
CLIP STUDIO PAINTに配置してポーズをつけることができます。そのまま使うことも、デッサン人形として使うこともできます。

顔は2種類、表情は全部で20種類以上あります。

クエリちゃんのUnity3Dアプリを作ったらプロモーション画像をつくるのにもお勧めです。

※ 画像内の文章に意味はありません

衣装は標準のほか、ハロウィン用とクリスマス用があります。季節に合わせた創作に役立ちます。

※ 画像内の文章に意味はありません


開発裏話

CLIP STUDIO用3Dキャラクターの表情を変更できるようにするには、顔の部分のマテリアルを一つにする必要があります。
顔の頂点グループも一つにした方が動作が良好でした。
既存の3Dモデルを流用する場合この仕様はとても厳しいため、CLIP STUDIOのライセンス素材の3Dキャラクターは表情がほとんど変えられません。
「クエリちゃん」はこの仕様を満たすことができたためUnityアセットの全ての表情と衣装を妥協なく移植できました。
その他の部分もMMD化より簡単でした。


ライセンス

"Query-Chan model" は Creative Commons Attribution 4.0 International License(CC-BY) に基づいて配布されています。
詳しくは公式サイトをご覧下さい。
http://query-chan.com/


クエリちゃんのMMDモデルも公開中です

クエリちゃんのMMDモデルで動画を作ったらぜひ動画サイトに投稿してください。キャラミんでも使えます。
[MMD] クエリちゃん・クリスマス版(初版) & クエリちゃんver1.02を公開しました


関連ブログ

CLIP STUDIO PAINT を使ってみました
CLIP STUDIO COORDINATE でプロ生ちゃんを使ってみる
[MMD] クエリちゃん・クリスマス版(初版) & クエリちゃんver1.02を公開しました
[マスコットアプリ文化祭] クエリちゃん大賞受賞の報告

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

2016年7月16日土曜日

CLIP STUDIO PAINT を使ってみました

CLIP STUDIO PAINT makes it possible to draw comics

当ブログの筆者は絵を描く事がないのですが、CLIP STUDIO PAINTを使ってみました。

環境

  • Windows 10
  • CLIP STUDIO PAINT PRO 1.5.6


CLIP STUDIO PAINT とは

CLIP STUDIO PAINT は株式会社セルシスが開発・販売する画像編集ソフトです。特にマンガ作成に秀でています。
価格は廉価版(PRO)のダウンロード版が5000円、全部入り版(EX)が2万円台でWindowsとMacに対応しています。
自分で絵を描く以外にプリセットの3Dキャラクターに表情やポーズをつけて人物を表現することもできます。
また、「素材をさがす」というエコシステムにより自分の作品に使える素材をダウンロードすることも、自分の素材を出品することもできます。


コミPo!との比較

プリセットの3Dキャラクターを使ってマンガを作るソフトといえば別の企業から Windows専用マンガデザインツール・コミPo! が販売されています。
CLIP STUDIO PAINT とコミPo!を比較してみました。

コミPo!の作品では「一つのコマに複数の人物がいて、白い部分がフキダシのみ」の絵柄をよく見かけます。
絵柄の善し悪しはここで議論しないとして、それらしいシーンをコミPo!で作ってみました。
もう少し手を加えたくてもコミPo!には描くための機能がありません。

CLIP STUDIO PAINTで似たようなシーンを再現します。
CLIP STUDIO PAINTでは3Dキャラクターのポーズは関節ごとに指定できます。フキダシや集中線にもたくさんのパラメーターがあり、きめ細かく表現できます。

このシーンに手を加えた結果が下の画像です。
CLIP STUDIO PAINT でセリフをしゃべっている人物にスポットライトを当てるような演出をしました。
フキダシのシッポは自由に曲げることができるので近くのキャラクターにかぶせずに済みます。
わずかな工夫でこのシーンが誰をフィーチャーしているかを読者に伝えることができます。
このシーンはもっと改善が必要ですが、CLIP STUDIO PAINT の豊富な機能のおかげでいろいろな表現ができそうです。
今回はマウスだけで加工しましたが、感圧ペンタブレットを使えばさらに豊かに表現できるようです。

CLIP STUDIO PAINT は沢山の機能を備えているため使いこなすにはマニュアルを熟読する必要がありますが、絵を描かない人にも多彩な画像編集ができるコストパフォーマンスの高いソフトだと思います。


関連ブログ

CLIP STUDIO COORDINATE でプロ生ちゃんを使ってみる
コミPo!で初音ミクのMMDモデルを使う
[Unity3D] 透視投影と平行投影を合成するには[Unity Chan]
[GIMP] GIFアニメーションの作り方

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

2016年7月9日土曜日

Visual Studio Code のターミナルを Cygwin に設定する方法

How to change VScode terminal from cmd.exe to Cygwin Bash

2016年6月、マイクロソフトがオープンソースソフトウェアとして開発・公開しているテキストエディター Visual Studio Code (以下VScodeと略します) のバージョン1.2が公開されました。
このバージョンから「ターミナル」機能が追加されました。
初期設定はVScodeのウィンドウ内でWindowsならコマンドプロンプトが、LinuxやMacならシェルが利用できます。
Windows版VScodeの設定を変更してターミナルからCygwinのBashが使えたのでその方法をまとめました。

blog.fujiu.jp  Visual Studio Code のターミナルをCygwinに設定する方法


環境

  • Windows
  • Visual Studio Code 1.2.0


設定方法

Cygwinは D:\cygwin にインストールされているとします。

VScodeを起動し
ファイル - 基本設定 - ユーザー設定
を開き settings.json に次の1行を追加します。



設定項目が複数ある場合はカンマで区切ります。

blog.fujiu.jp Visual Studio CodeのターミナルをCygwinに設定する方法

これでメニューの
表示 - Toggle Integrated Terminal
をクリックすると画面下半分にCygwinが表示されBashが使えるようになりました。

実際に bashスクリプト のコーディングに使ってみた様子がこちらの画像です。


Cygwinを使うメリット

CygwinはWindows上でPOSIX環境を再現するアプリケーションです。
devカテゴリーを全てインストールと、GCC・Perl・Python・Luaなど広く使われるコンパイラーやプログラミング言語を利用することができます。
ターミナルをCygwinに設定すればVScodeだけでこれらのプログラミング言語をコーディングしデバッグ・実行することがきるようになり、効率化が期待できます。


VScodeのターミナルでCygwinを使うときの注意点

ターミナル操作中にEscキーを押すと、ターミナルのウィンドウが隠れます。
Cygwinでviやvimを起動中にEscキーを押すとターミナルのウィンドウを隠す処理にフックされ、viやvimのモード切替ができませんでした。
VScode利用者がviやvimを使うことはないと思いますが、Escキーの操作がBashに効かない点に注意が必要です。
バージョン 1.3.0で修正されました 2016年7月13日追記

逆に Ctrl+C や Ctrl+V はVScodeにフックされずショートカットキーでのコピー・貼り付けができません

ちなみに、このブログを書いている時点では全角文字(CJK character)がターミナルに正しく表示されません。下の画像は
echo あいうえお
を実行した結果です。
バージョン 1.3.0で修正されました 2016年7月13日追記

そのほか、Cygwinは
  • Unix系の操作を覚える必要がある
    各コマンドやパーミッションなど
  • ファイルのパスの書き方がWindowsと異なる
    例: C:\ は /cygdrive/c/ と書くなど
  • このブログを書いている時点ではCygwinからVScodeの起動ができない
などの特徴があります。


関連ブログ

bashスクリプトの変数のスコープにはまったところと対処方法
Visual Studio Community 2015 をISOファイルからWindows10にインストールする方法
[Android] Xamarin でアプリを作ってみました

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

2016年7月1日金曜日

bashスクリプトの変数のスコープにはまったところと対処方法

The programming pitfalls in variable scope for Bash scripts

bashスクリプトを書いた際、変数が有効なスコープ範囲内にあるはずと思っていたのに値が消えてしまうトラブルにはまってしまいました。
その原因と対処方法をまとめました。


環境

  • Windows 10
  • Cygwin


きっかけは短縮URLの移動先を調べるスクリプト

Twitterのt.coを始め、Google URL Shortenerなど長い文字になりがちなURLを短縮するサービスが広く利用されています。
これらの短縮URLはWebブラウザーなどでクリックすると指定された移動先のURLに移動します。
短縮URLの文字を見ただけでは移動先のサイトは分かりません。
短縮URLの移動先がさらに短縮URLで別の移動先が指定されていることも少なくありません。

そこでCygwinで短縮URLの移動先を再帰的に調べ最後の移動先を表示するbashスクリプトを書いたのですが、変数の値が途中で消えてしまいました。

blog.fujiu.jp bashスクリプトで変数スコープにはまった


curlコマンドをインストールする

curlコマンドが必要です。Cygwin Setupかapt-cygなどでcurlをあらかじめインストールしてください。


失敗したスクリプト

動くはずと思って書いたスクリプトです。


上のスクリプトをファイルに保存しパーミッションを755に設定します。
引数に適当な短縮URLを指定して実行すると、curlコマンドを使って応答ヘッダーを調べます。
移動先が指定されていればそのURLの応答ヘッダーを調べる処理を繰返し、最後の移動先を表示するはずでした。

実際に実行してみると
(1)のstatus変数には間違いなくHTTPステータスが代入されている
(2)のstatus変数は値がカラになっている
という期待を裏切る結果が起きました。


原因

下記サイトを参考にしました。
スマートな紳士のためのシェルスクリプト(8):シェルスクリプト最大の罠、while問題 (1/2)- @IT
http://www.atmarkit.co.jp/ait/articles/1209/14/news147.html
http://www.atmarkit.co.jp/ait/articles/1209/14/news147.html

原因はパイプでつないだ先の変数はパイプ先のみ有効とのことです。
上のスクリプトの場合、パイプでつないだwhile文の内側にある(1)のstatus変数はdoneの直前まで有効ですが、doneより下にある(2)のstatus変数はパイプの外側にあるので別の値を持つ変数だった、ということでした。


解決策

パイプでつないだ先の変数の値を/tmpディレクトリーにファイルとして保存することにしました。


修正したスクリプト

期待通りに動作するように修正したスクリプトがこちらです。


/tmpディレクトリーをRAMディスクに置ければちょっとだけ高速化できそうです。


関連ブログ

[クラウド] BluemixのJavaアプリ開発ではまったところと対処方法
C#のAzure用Webジョブ開発ではまったところ

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

2016年6月25日土曜日

[Android] Xamarin で jar (Javaライブラリー) を実行する方法

How to run Jar libraries on Xamarin.Android

前回 Android Studioで作ったjarライブラリーファイル
をAndroid向けXamarinで実行します。


環境

  • Windows 10
  • Visual Studio Community 2015


既存のAndroid用ソリューションに Bindings Library を追加する

XamarinでJarライブラリーを実行するために Bindings Library プロジェクトを追加します。
Visual Studioを起動してAndroidアプリ用ソリューションを開きます。
ソリューションエクスプローラーのソリューションを右クリックして
追加 - 新しいプロジェクト
をクリックします。
blog.fujiu.jp [Android] Xamarin で jar (Javaライブラリー) を実行する方法

Bindings Library (Android) を追加します。
名前は BindingFujiuJar としました。

これでソリューションに BindingFujiuJar が追加されました。


Bindings Library プロジェクトにjarファイルを追加する

今回実行するjarファイルの中は StringDate というクラスに getNow() というメソッドがあります。 ソースはこちら

BindingFujiuJar の Jars フォルダーを右クリックして
追加 - 既存の項目
をクリックしてAndroid Studioで作ってjarファイルを追加します。


追加したjarファイルのプロパティのビルドアクションを EmbeddedJar に変更します。

今回のjarライブラリー化したクラスは Try-with-resources を使っているので、Xamarin.Androidプロジェクトのプロパティーの Compile using Android Versions を19以上に設定する必要がありました。
Android SDKの最新版をダウンロードし、「Use Latest Platoform」にしておきました。


既存のAndroid用プロジェクトの参照を設定する

Android用プロジェクト (先ほど追加したBindings Libraryではない方) の参照を右クリックして 参照の追加 をクリックします。

プロジェクト内にある先ほど追加した BindingFujiuJar をチェックしてOKをクリックします。

これで準備が整いました。


C#のクラスからJavaのjarライブラリーのクラスを実行する

オブジェクトブラウザーでJavaのパッケージ名はC#の名前空間に変換された結果を確認します。

jp.fujiu.fujiujp_jar
というJavaパッケージ名は
JP.Fujiu.Fujiujp_jar
という名前空間に変換されました。

C#のコーディングスタイルに合わせて1文字目とピリオドの次は大文字で書くとして、2文字目のPも大文字に変換されました。
またJavaの getNow() というメソッド(アクセサー)はC#の Now というプロパティに変換されます。

JavaのStringDateクラスのgetNow()メソッドを呼び出すActivityをXamarinのC#で書いてみました。
ボタンをクリックするたびに結果をToastに表示するActivityの例です。



実行結果

Docomo SH-06E (Android4.2、APIレベル17)で正常に実行できました。

Xamarin.Formsソリューションでは .Droidプロジェクトから実行することができました。


まとめ

  • jarファイルのビルドアクションはEmbeddedJarに設定する
  • Javaのパッケージ名はC#の名前空間に変換される。一部大文字に変換されるので注意
  • Javaのgetやsetで始まるメソッド(アクセサー)はC#のプロパティに置き換えられる
    例: getNow() → Now


注意点

C#からJavaのコードを実行するのにリフレクションを使っているようです。
リフレクションは非リフレクションと比較すると遅い実行方法なので速さが求められる処理には向きません。
C#への移植が困難で速さを犠牲にしてもいい場合以外は使用を控えた方が良さそうです。


トラブルシューティング

実行時に JNIEnv.FindClass ClassNotFoundException が発生する

プロジェクトのクリーンとビルドをし直したら発生しなくなりました。



関連ブログ

[Android Studio] Xamarin で実行可能な jar (Javaライブラリー) の作り方
[Android] Xamarin でアプリを作ってみました
Android Studioを使ってみました
[Unity3D] Unity5のプロジェクトをAndroid Studioにインポートする方法
[Java] Android StudioやEclipseのお節介な警告を消す方法
[Android] アナログ時計アプリをライブ壁紙に改造する

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

2016年6月18日土曜日

[Android Studio] Xamarin で実行可能な jar (Javaライブラリー) の作り方

How to create JAR libraries for Xamarin.Android

XamarinはC#でAndroidやiOSなどのアプリケーションを開発できるマルチプラットフォーム開発ツールです。
Android向けXamarinアプリは Bindings Library でjarファイルを実行することもできます。
jarファイルはJavaのコンパイル済みクラスをまとめたライブラリーファイルです。
ただしEclipseのみで作ったjarファイルは実行できませんでした。
Android向けXamarinで実行できるjarファイルをAndroid Studioで作る方法をまとめました。


環境

このブログを書いた時点の最新バージョンを使っています。
  • Windows 10
  • Android Studio 2.1
  • Java SE Development Kit 8u91


jarライブラリー化したいクラスを決める

今回はシンプルに現在日時を文字列で返すクラスをjarライブラリー化します。
ソースは次の通りです。

StringDate.java



Android Studio で クラスをjarファイル化する

プロジェクトにModuleを追加する

新規プロジェクトを作っても既存のプロジェクトを使ってもいいです。
Android StudioのProjectウィンドウを右クリックし、
New - Module
を追加します。
blog.fujiu.jp [Android] Xamarin で実行できる jar (Javaライブラリー) の作り方

Moduleの種類はAndroid Libraryを選びます。

Moduleの名前は fujiujp_libs としました。
今回jar化したいクラスは Try-with-resources を使っているので Minimum SDKは19以上に設定する必要がありました。
Minimum SDKはGradleのminSdkVersionを修正して変更することもできます。

ModuleにJavaクラスを追加する

Projectウィンドウのfujiujp_libsのツリーを開いてJavaクラスを追加します。

Gradleファイルにスクリプトを追記する

Projectウィンドウの Gradle Scripts のツリーを開いて build.gradle (Module: fujiujp_libs) を編集します。
このファイルに次のコードを追記します。




jarファイルをビルドする

Gradleウィンドウを開いて左上の Refresh All Gradle Projects をクリックします。

fujiujplibsというGradleが追加されるのでツリーを開いて
Task - other fujiuJpJar
をダブルクリックします。


これでプロジェクトフォルダーの fujiujp_jar\libs\ に FujiuJpLib.jar という名前でjarファイルができました。

次回はこのjarファイルのクラスをXamarinから実行します。



関連ブログ

[Android] Xamarin でアプリを作ってみました
Android Studioを使ってみました
[Unity3D] Unity5のプロジェクトをAndroid Studioにインポートする方法
[Java] Android StudioやEclipseのお節介な警告を消す方法
[Android] アナログ時計アプリをライブ壁紙に改造する
Live2Dを使ってみました

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

2016年6月11日土曜日

外付けハードディスクを完全消去して処分する方法

How to erase hard disk drives perfectly

ハードディスクに保存されたファイルは削除しても簡単に復元できることがあります。
物理フォーマットして消去しても高い技術力があれば消去する前の情報が復元できると言われています。

パソコンをはじめ最近のゲーム機やテレビ録画機にはハードディスクが内蔵されています。
これらのハードディスクには個人情報や人に知られたくない情報も少なからず記録されています。
ハードディスクを処分する際には可能な限り復元できないように消去したいものです。


環境

  • Windows 10


VirtualBoxにLinux OSをインストールする

CD-ROMドライブやUSBメモリードライブから起動して完全消去するソフトはいくつかありましたが、ほとんどが内蔵ドライブを消去するためのソフトでした。
Windowsで外付けドライブを消去するため、VirtualBoxにUbuntu Linuxをインストールして消去することにしました。
blog.fujiu.jp 外付けハードディスクを完全消去する


フォーマットしたいハードディスクをUSB接続できる装置に接続する

ハードディスクにはSATA、SAS、IDEなど複数の接続規格があります。
規格にあったUSB接続できるケースを買って設置します。
下の画像はIDE規格のハードディスクをUSB接続するケースです。
これでPCにUSB接続できます。


USBハードディスクをVirtualBoxに接続する

パソコンにハードディスクをUSBケーブルで接続します。
VirtualBoxを管理者として実行します。
接続したUSBハードディスクをVirtualBoxの
デバイス - USB
からチェックを入れます
これでLinux OSにUSBハードディスクが接続されました。


USBハードディスクのデバイスパスを調べる

消去したくない外付けハードディスクが接続されている場合は誤って消去しないように全て取り外します。
Gpartedを起動します。
インストールされてない場合は次のコマンドでインストールします。
sudo apt-get install gparted

Gpartedの画面右上のドロップダウンメニューから目的のUSBハードディスクを探します。
/dev/sda の下に /dev/sdb とか /dev/sdc があるはずです。
今回は /dev/sdb でした。


ddコマンドでハードディスクにランダムな内容を書き込みする

次のコマンドで /dev/sdb にランダムな内容を先頭から順に書き込みます。


最後まで書き込みが終わると次のメッセージが表示されます。


これを数回繰り返せば復元はほぼ不可能です。

最後まで書き込みが終わるには、容量に比例して時間がかかります。
強制終了する場合は、Ctrlキーを押しながらCキーを押します。

120GB、7200rpmのハードディスクを途中で強制終了した結果は次の通りでした。

1950380+0 レコード入力
1950380+0 レコード出力
7988756480 バイト (8.0 GB) コピーされました、 720.32 秒、 11.1 MB/秒

1GB当たり90秒、120GB全体で3時間かかる見込みでした。

ハードディスクは先頭にファイルの配置情報が記録されるので、最初の数GBをランダムに書き込むだけでも復元を困難にできます。

消去後は無料で合法の手段で処分する

消去して不要になったハードディスクはリサイクル業者に処分してもらいました。
不要になったパソコンを無料で廃棄する方法


なぜランダムな内容で復元を防げるのか

消去したハードディスクを復元する方法は、ハードディスクを分解し中のプラッターを電子顕微鏡で撮影し、ヘッドの通り道の脇に残った磁粉の並び方解析して消去する前の情報を復元するという手法です。
気の遠くなる作業ですが、技術の進歩次第で瞬時に解析される可能性があります。
ランダムな内容を繰返し上書きすれば脇に残った情報からの復元が困難になります。

USBメモリードライブやSSDは同じ手法で復元できません。



関連ブログ

不要になったパソコンを無料で廃棄する方法
(失敗談) ハードディスクを処分する
[Windows8] Paragon Hard Disk Manager

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