2015年10月31日土曜日

3次元CGソフト・Blenderの脱初心者を目指す

How to make the Blender friendly
Blenderはモデルデータの作成からアニメーション、コンポジット出力(画像や動画の書き出し)までできる3次元CG編集用ソフトです。
Windows版、Mac版、Linux版が公開されています。
同じく3次元CG編集用ソフトのMAYAや3DS MAXは有償ですが、Blenderは無償で使えるフリーウェアです。
Blenderを使いこなしたいものの長く使うには強い動機が必要と思ったので今回は前置きが長いです。


現在の環境

・Windows8.1
・Blender 2.75
現在、UnityアセットをMMDに変換するための勉強中です。
下の画像はポケットクエリーズのクエリちゃん


はじめてBlenderを使ったのは2012年でした

2012年当時、Androidアプリ・Shuffle!Vを開発するにあたりカードを3次元で表現したかったのでBlenderを使い始めました。

https://play.google.com/store/apps/details?id=jp.fujiu.shuffle_v

当時のBlenderはバージョン2.5だったと思います。
Blenderを使うことにした理由は様々なデータ形式にエクスポートすることができるためです。
その後、Blenderでカードらしいモデルは作れたのですが結局使いませんでした。


2014年、頼まれごとをされたので最新版をインストールする

2014年にプログラミング生放送勉強会の主催者からマスコットキャラクター「プロ生ちゃん」をフィギュア化したいので3Dプリンター用データを作って欲しいと頼まれました。
MikuMikuDance(MMD)のモデルデータにポーズをつけてstlファイルに変換するという内容でした。
ファイルの変換にはBlenderを使う必要がありました。
Blenderに詳しいわけではなく3Dプリンターを使ったこともありませんでしたが、勉強会のネタになりそうなので手伝いました。
当時最新バージョンのBlender2.6をインストールして使ってみました。
stlファイルの確認用にnetfabb Basicもインストールしました。
主催者にはstlファイルを渡したのですが、あるときからフィギュア化に関する連絡が途絶えました。

3Dプリンターに手が届く今こそBlenderを使いこなしたい

主催者に渡したプロ生ちゃんのstlファイルはさらに他の人の手に渡り改良が加えられたようです。
それでもフィギュア化できなかった理由は「プリントできない細い箇所がある」とのことでした。
stlファイルを作ればいいという話ではなく勉強不足でした。
当時は失敗に終わりましたが、3Dプリンターが高性能化・低価格化している今こそモデルデータを作れるようになりたいものです。


Blenderを使う理由

3Dモデルを作ってstlファイルに保存するだけなら123D Designの使い方を覚えれば済みそうです。
ですがこのブログを書いている時点では、123D Designでエクスポートできるファイルの種類は限られています。
一方、Blenderは様々なデータ形式をインポート・エクスポートできます。
Blenderで作ったモデルデータをUnityで使うこともできます。
有志が公開しているプラグインを使ってMMDのモデルデータに変換することもできます。
逆にUnityやMMDのモデルデータをBlenderでstlファイルに変換すれば3Dプリントすることもできます(失敗しましたが)。
※著作者が3Dプリントを許可している場合に限ります。


初心者を寄せ付けないBlenderのハードルを知る

とりあえず脱初心者を目指してBlender2.7系で人型の立体物を作りボーンを入れるまで操作してみました。
ツッコミどころ満載ですが何事も経験なので良しとします。

Unityでも動きました。右の2体が自作したモデルです。

Blenderは多機能ですが実際に使ってみると分かりにくいです。
Blenderが他のCG編集ソフトに比べて特に取っつきにくい点はを2つ挙げてみます。
※この2点以外にもたくさんあります。


1つ目のハードルは「右クリックが直感的ではないこと」

WindowsやMacのユーザーならマウスを右クリックしたらコンテキストメニューが表示されることを期待してしまいます。
ところがBlenderのデフォルト設定では右クリックはオブジェクトの選択に割り当てられています。
そして左クリックは3Dカーソルの移動です。
コンテキストメニューの表示はショートカットキーを使うのですが、マニュアルを見なければ知るすべがありません。
例えば
辺の編集はEdit ModeでCtrlを押しながらEとか
アーマチュアの追加はObject ModeでShiftキー押しながらAとか
多種多様です。


2つめのハードルは「モードが複数あること」

Blenderは選択中のオブジェクトによって編集出来るモードの種類が変わります。
例えばメッシュ(描画に関わるオブジェクト)を選択している場合のモードは次の通りです。
選んだモードによって編集出来ることが変わります。

アーマチュア(描画されることなくメッシュのボーンや関節を定義するオブジェクト)を選択している場合のモードは次のようになります。
慣れないうちは混乱します。

これらの取っつきにくさを踏まえた上でBlenderを使いやすくする設定をまとめてみました


日本語を含むファイルパスの文字化けを直す

初期設定のままではファイル選択画面の日本語が文字化けします。
メニューの
File - User Preferences
を開いて System の右下の方にある International Fonts にチェックを入れて Language をJapanese に設定し、Save User Settingsをクリックすると正しく表示されます。
その下のTranslateの3つのトグルボタンをクリックすればメニューなども日本語化できます。


左クリックでオブジェクトを選択出来るようにする

File - User Preferences
を開いて Input の左の方にある Select With:Left をクリックして、Save User Settingsをクリックすると左クリックでオブジェクトを選択できるようになります。
ただしこの設定をしてもタイムラインのカーソル移動操作は右クリックのままです。


単位をメートルに変更する

初期設定だと画面右に表示されている Propertiesウィンドウ のSceneをクリックします。
Unitsの欄にあるMetricをクリックします。これでメートル単位になりました。
ミリメートル単位にする場合はその下のScaleに0.001と入力します。

メニューの
File - Save Startup File
を実行すると次回から新規作成したときに最初からメートル単位で編集出来ます。


「脱初心者を目指す」というタイトルの割に設定変更を3つ挙げただけですが、簡単に使いこなせる攻略法を思いつきません。
設定を変えてもBlender特有な操作感は変わりませんが初期設定のままよりは使いやすくなると思います。
必要な操作さえ覚えれば手放せなくなります。
チュートリアルを繰り返して覚えましょう。


関連ブログ

[Unity 3D] Blender could not be found.を解決するには
[Blender] obj2opengl.plをJava用に改造する
[Unity3D] Unityでプロ生ちゃんMMDモデルを扱う
[Unity3D] Unity4からUnity5へのバージョンアップでの変化
[Unity3D] ゲーム画面をキャプチャしてMovie Studioで動画に編集する
CLIP STUDIO COORDINATE でプロ生ちゃんを使ってみる

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

2015年10月24日土曜日

[Java] Android StudioやEclipseのお節介な警告を消す方法

How to hide warnings on Java
Android StudioやEclipseなどの統合開発環境は一度も使われない変数や呼ばれないメソッド(関数)があると警告してくれます。
ミスを防ぐには強力な機能です。
しかし使わないクラスやメソッドをソースに残したいとき、統合開発環境が鬼の首を取ったような勢いで警告するのはお節介すぎます。



統合開発環境の設定次第では警告を表示しないようにできますが、アノテーションを使って警告を抑止することもできます。
アノテーションで抑止しておけばソースコードを設定の異なる統合開発環境にインポートしても警告を抑止することができます。


環境

・Windows8.1
・JDK 1.7
・Android Studio 1.4
・Eclipse Juno Service Release 2


警告を消す @SuppressWarnings アノテーション

未使用のクラスやメソッドの直前に次の1行を追記します。

@SuppressWarnings("unused")

これでAndroid StudioもEclipseも警告が消えました。


unused以外の警告も抑止できる

全て検証したわけではありませんが@SuppressWarningsは他の警告も抑止できるようです。

@SuppressWarnings("all")
というアノテーションで全ての種類の警告を抑止できます。

他にも次のように警告毎に抑止ができるようです。

@SuppressWarnings("static-access")
型 {1} からの static メソッド {2} には static を参照してください。
を抑止する

@SuppressWarnings("serial")
シリアライズ可能クラス {1} は long 型の static final serialVersionUID フィールドを宣言していません。
を抑止する

@SuppressWarnings("finally")
finally ブロックは正常に完了しません。
を抑止する

@SuppressWarnings("null")
null ポインター・アクセス: 変数 {1} はこのロケーションでは必ず null です。
を抑止する

@SuppressWarnings("deprecation")
{1} は使用すべきではありません。
を抑止する

@SuppressWarnings("unchecked")
型の安全性: メソッド {1} は raw 型 {2} に属しています。 総称型 {3} への参照はパラメーター化される必要があります。
を抑止する

@SuppressWarnings("rawtypes")
{1} は raw 型です。総称型 {2} への参照は、パラメーター化する必要があります。
を抑止する

抑止しすぎると本当に修正が必要な警告まで表示されなくなってしまうので要注意です。


参考にしたサイト

Eclipse警告抑制メモ(Hishidama's Eclipse error/warning Memo)
http://www.ne.jp/asahi/hishidama/home/tech/eclipse/warn.html

SuppressWarnings (Java Platform SE 7 )
http://docs.oracle.com/javase/jp/7/api/java/lang/SuppressWarnings.html


関連ブログ

[Java] Eclipseプラグイン開発のトラブルシューティング
[Java] 文字列がSQL ServerのDateTime型に適合するかチェックする
[Java] SwingのUIを無限ループで更新するには
[Android] Javaのstaticクラス(Handler)から非sataticクラス(Activity)のメソッドを呼び出すには(弱参照)
[Java] thisとは #2
[Blender] obj2opengl.plをJava用に改造する

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

2015年10月17日土曜日

[Windows10] ファイルの共有と解除を自動化する方法

How to schedule to share and unshare folders and files
Windows OSはネットワーク内のほかのPCからファイルやフォルダーを読み書きをできるようにする共有機能があります。
このファイル共有機能は便利なのですが、Windows Server 2003の外付けハードディスクドライブのフォルダーを共有化すると再起動した際に共有設定か勝手に解除されてしまう問題がありました。
この問題を回避するため、フォルダーの共有を自動化する設定をしていました。
Windows Server 2003は既にサポートが切れたOSなのでWindows10での手順を確かめてまとめました。
Windows7やWindows8.1もほとんど同じ手順で設定できます。


環境

・Windows10 Professional (共有フォルダーを公開する側)
・Windows8.1 Home (共有フォルダーにアクセスする側)


フォルダーを共有設定する

Windows10のドライブに共有用のフォルダーを作成します。
Cドライブ直下に「共有フォルダー」というフォルダーを作り、これを共有設定することにします。

フォルダーの共有はコンテキストメニューでも出来ますが、コマンドラインから net share コマンドの実行でも設定できます。
net share コマンドの実行するにはコマンドプロンプトを管理者として実行する必要があります。
スタートメニューの
全てのアプリ - Windows システムツール - コマンドプロンプト
を右クリックして管理者として実行します。

共有フォルダーを「Cドライブ共有フォルダー」という名前で読取りと書込みを共有できるように設定するコマンドは次のようになります。


これで他のPCから共有フォルダーに読み書きが出来るようになりました。

ちなみにコマンドプロンプトで
net share /?
と入力すると構文の説明が表示されます。


共有設定のバッチファイルを作成する

拡張子が .bat のテキストファイルに次の内容を記載して保存すると、タスクスケジューラで共有設定できるようになります。

共有設定.bat




タスクスケジューラーで自動化する

冒頭で「Windows Server 2003の共有設定か勝手に解除されてしまう問題」があると書きましたが、この問題を回避するために起動後にタスク(現Windows OSの「タスクスケジューラー」)でbatファイルを実行するように設定していました。
今回は内蔵ドライブに共有フォルダーを作成したので勝手に共有が解除されることはないと思いますが、特定のタイミングで共有化や共有解除をしたいことがあるかと思います。

「共有フォルダーを毎日10時から17時の間だけ公開する」という運用を想定し、タスクスケジューラでbatファイルを起動するようにします。

スタートメニューから
全てのアプリ - Windows システムツール - Windows 管理ツール - タスク スケジューラ
を起動します。
Windows8.1のタスクスケジューラーはチャームの
設定 - コントロールパネル - システムとセキュリティ - 管理ツール
の中にあります。

batファイルを自動起動するために右の「基本タスクの作成」をクリックします。
ちなみに「基本タスクの作成」と「タスクの作成」は作成にウィザードを使うか使わないかの違いのようです。

名前:共有設定

トリガー:毎日

開始:10時

操作:プログラムの開始

プログラム/スクリプト:共有設定.bat をフルパスで指定

まだ完了ではありませんが完了をクリックします。

タスクスケジューラ ライブラリに追加した「共有設定」が追加されたので右クリックしてプロパティを開きます。

プロパティ設定の「最上位の特権で実行する」にチェックをつけてOKをクリックして完了です。
「最上位の特権」は「管理者権限」と同じ意味のようです。


共有解除もnet shareでできる

共有の解除もnet shareコマンドのバッチファイルで設定できます。

共有解除.bat

共有フォルダーを「10時から17時の間だけ公開する」という運用をするなら、 共有解除.bat をタスクスケジューラで17時に起動するように設定します。

今回はタスクスケジューラのトリガーに日時を指定しましたが、特定のログをトリガーにすることも出来ます。
ログとその内容を把握するのは大変ですが、使いこなせればより細かな設定が出来そうです。


参考にしたサイト

コマンド・プロンプトでファイル共有を管理する - @IT
http://www.atmarkit.co.jp/fwin2k/win2ktips/789netuse/netuse.html


関連ブログ

[Windows] 外付けハードディスクをつなげてもエクスプローラーに表示されない
[Windows10] 古いパソコンをフォーマットしてWindows10をクリーンインストールできるか?
Windows10のバックアップと復元を使ってみました
[Windows10] 外国語を簡単に入力する方法
Visual Studio Community 2015 をISOファイルからWindows10にインストールする方法

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

2015年10月10日土曜日

[エンスー] アクセルを踏んだ分だけの加速をしない 2015年版 (エンジンの息継ぎ・プラグのくすぶり)

How to fix a knocking motor
自動車のエンジンのエアクリーナーが詰まったりエンジンにアーシングしていたためアクセルを踏んだ分だけの加速をしないというブログを去年書きました。
アクセルを踏んだ分だけの加速をしない(エンジンの息継ぎ・プラグのくすぶり) 2014年版
その後も不調が続いたのですが解決できました。


対象の自動車

・点火プラグを4本使う4気筒ガソリンエンジン
・バッテリーは半年以内に交換済


症状

発進時にアクセルを踏んでも特定の回転数の範囲で加速が鈍いというものです。(息継ぎ息つき)
また、低いギアで走行中にアクセルペダルを踏み込むと一瞬遅れて加速、アクセルペダルを離すと一瞬遅れて減速という症状もあります(どんつき)。
アイドリングが700rpmまで落ち込むことがあります。
どんな車種でも必ず起きるけど原因が特定しにくい症状です。


診断

R-VITというECUのパラメーターをモニタリングするパーツで一通り見てみましたがセンサー類は全て動作しているようです。
全てのセンサーをモニタリングできるわけではなく故障箇所を特定できるものでもないですが参考になります。
写真のR-VITは初期のものですが現在のR-VITはさらに高性能化されてるようです。
去年の時点でエアクリーナーの清掃・交換点火プラグの交換で今回と同様の症状が改善したので、もう一度吸気系と点火系から探ってみます。


吸気系のチェック

吸気系をチェックします。
スロットルの上流(エアークリーナ側)のエアフロー・チューブ(インテークパイプ)に裂け目を発見しました。
応急処置として塞いでみましたが変化ありません。
そもそもエアフローセンサーがない車種なのでエアフロー・チューブに小さい穴が開いたくらいでは影響ありません。

念のためスロットル周りを清掃しましたが効果ありません。


点火系のチェック

バッテリーはまだ大丈夫なはずなので点火プラグから調べます。
写真左(フライホイール側のプラグ)から写真右(プーリー側のプラグ)に行くほどカーボンが多く付着しているように見えます。

今回はイグニッションコイルを交換することにしました。
この車種は1つの点火プラグに1つのダイレクトイグニッションコイルを装着するタイプです。
純正の部品番号と同等品の日立オートパーツ&サービス製を買いました。
ディーラーに依頼すると部品代と工賃で3万円くらいですが、イグニッションコイルを楽天やAmazonで買って自分で交換すればその半額に高い金額で済みます。

こちらははじめから装着されていたDENSO製イグニッションコイル。
いろんな角度から外観チェックしましたが火花がリークした痕跡はありません。

直流抵抗を測定します。
手持ちの資料に測定方法がないので総当たりしました。
抵抗値が測定できたのは下の写真の1-2間、2-3間、3-1間の3カ所でした。
1: IB
2: G
3: +
とのこと。

今まで使っていたコイル
冷間時(気温35度くらいの日)

1-2間 2-3間 3-1間
1番目 1.199kΩ 49.4kΩ 50.5kΩ
2番目 1.197kΩ 49.7kΩ 50.9kΩ
3番目 1.202kΩ 49.8kΩ 51.0kΩ
4番目 1.212kΩ 50.1kΩ 51.5kΩ

新品のコイル
冷間時(気温27度くらいの日)

1-2間 2-3間 3-1間
1番目 1.93kΩ 12.53MΩ 12.53MΩ
2番目 1.94kΩ 12.46MΩ 12.48MΩ
3番目 1.82kΩ 12.23MΩ 12.23MΩ
4番目 1.78kΩ 12.00MΩ 12.01MΩ

2-3間と3-1間は単位が違いすぎるので構造が違うのかもしれません。
1-2間も新品の方がばらつきが大きいです。


効果

イグニッションコイル交換の効果を確かめるためECUはリセットせず、点火プラグはカーボンが付いたまま使い回しましたが違いがはっきり分かります。
低回転でノッキングしにくいし全域にわたって静かになりました。
700rpmまで落ち込むことがあったアイドリングは数百キロ走行後に安定しました。(ECUが再学習したか溜まっていたカーボンが除去された?)
燃費も良くなりました。(本来の性能が回復した?)

ただし、アクセル操作に加速減速が遅れる症状は直りませんでした。
ラッシュアジャスターかスロットルの寿命かも。


ディーラーでは直せなかった

ディーラーに持ち込んでもこれらの症状は直してもらえませんでした。
ディーラーは「チェックランプが付かないから」とか「古いから」などと言い訳します。
チェックランプが付かなければマニュアル通りの診断ができないし古いくなればガタが来るのも当然ですが「古い車を直すより新しい車を売りつけた方が儲かるぞ」というのが本音です。
そもそもプロの整備士が明らかな不調を見落とすはずがありません。
車検や修理で売上げに貢献し続けてきたのに古くなったら手のひら返しとは世知辛いものです。



関連ブログ

アクセルを踏んだ分だけの加速をしない(エンジンの息継ぎ・プラグのくすぶり) 2014年版
[電子工作] 車載用オーディオのノイズを除去する (イレギュラーなグランドループ対策)
自動車の点火プラグ交換
ガソリンエンジンのオイル交換

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

2015年10月3日土曜日

[ThinkPad] ノートPCのメモリー(RAMモジュール)を交換しました

How to exchange the laptop's RAM modules
ノートPCのメモリーを増設したのでその手順をまとめてみました。

対象

・ThinkPad E430


メモリーを増やすメリット

そもそもハードディスクをSSDに交換してから動作速度は快適なのですが、それでもメモリーを増やすメリットを挙げてみます。
  1. スワップによるSSDへの書き込みが減るのでSSDの寿命が延びそう
  2. PCパーツは世代交代が激しいのでこのPC用メモリー(DDR3)は近い将来価格が上がったり流通量が減って入手しにくくなる
  3. メモリーの空き領域をRAMドライブとして使いたい

メモリーを増やすデメリット

メモリーを増やした後に起きそうなデメリット(弊害)も挙げてみます。
  1. 消費電力が上がる
  2. 発熱量が上がる
  3. Windows8/8.1の場合、ハイバネーションファイル(hiberfil.sys)の容量が大きくなる
今回はノートPCなので上の2つのデメリットは深刻です。
メーカーの仕様の範囲で使う限りは大丈夫だと思いますが、メモリーを増やした後に動作が不安定になったら元に戻せる用意が必要だと思います。


交換作業

交換方法はPDFマニュアルに載っているので必要なら印刷して見ながら作業するといいと思います。

ネジを外して背面カバーを外します。
外したついでにサーマルファン付近のほこりも掃除しました。

このPCは2つのRAMモジュールのスロットに標準で2枚のメモリーが取り付けられてます。これを2枚とも外して容量が大きい2枚のメモリーと交換します。
外し方は左右の金属パーツのラッチ部分を軽く広げるとメモリーの基板が起き上がるのでそれを外すだけです。
あまり力を入れすぎると破損してしまいます。最悪の場合マザーボード交換で新品を買うのと同じくらいの修理費がかかると思います。

1枚目を外したらその下の2枚目も外します。

標準メモリーの2枚を外したら新しいメモリーを2枚とも取り付けます。
RAMモジュールを軽く押し込むとラッチがパチンと閉まります。


交換後

交換後はなぜかBluetoothマウスの再ペアリングが必要でした

メモリーが正しく認識されているかは
タスクバー右クリック - タスクマネージャー
のパフォーマンスで確認できます。
他社製の古いPCはハードウェア構成を変えたらBIOSを初期化(CMOSクリアー)しないと動作が安定しませんでしたが、こPCは問題なく動いてます。
体感速度の変化はありませんでした。
Windowsの最大のボトルネックはディスクI/Oのようです。

動画編集ソフトVegasProのクラッシュのしやすさも変わりませんでした。


今回のRAMを交換したPCはDDR3規格でした。
このブログを書いている時点では新しいDDR4規格のRAMが普及しはじめ、近い将来DDR3の流通量が減り価格も上昇することが予想されます。
PCの動作速度に不満はなくても増設可能だったり予算があったりしたら交換や増設の検討をお勧めします。

関連ブログ

[ThinkPad] ノートPCのハードディスクをSSDに交換
[ThinkPad] サーマルファン故障
[ThinkPad] ThinkPad Edgeが起動しなくなった
[BIOS] 起動しなくなったHP ProLiant ML115 G5が直った
[Windows7] メモリーを増設したら起動しなくなった (Kernel-power イベントID41)
夏に負けないパソコンのメンテナンス2015年版

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