中田真秀(なかたまほ)のブログ

研究について、日常について、その他。

3Dプリンタ修理

2014-09-29 10:59:30 | 日記
とにかく3Dプリンタでプリント出来ない事態が続いていたので修理。で、返ってきた。
原因は接触不良。ケーブルを引っ張りすぎたらしい。

ということで問題が解決、とおもいきや、今度は土台がゆるくてすぐ反るという不具合があった。
マニュアル通りに、ヘッドとプレートの位置を調節すればok。毎回調節することが望ましいらしい。

調節したら快調。そこらへん自動調整してくれないかなとか思う。
おそらくあと2~3世代重ねるとトラブルが激減するんだろうな。


VirtualBox Headless mode + VNC/RDP on Ubuntu

2014-09-21 09:11:24 | 日記
VirtualBoxは便利な仮想化手段で、よく使っている。私は特にこれをVNC経由で使うことが多い。というのも手元のマシンの負荷はなるべく減らしたいからである。若干余ったCPUリソースがあればそこで仮想マシンを動かし、開発するというスタイルである。ただ、生のマシンの上でVirtualBoxを動かすと、解像度がそれに合わされてしまうため、XVNCサーバーを動かしそこでVirtualBoxを立ち上げ、外からVNC Viewerでつなぐことを行う。これは結構リソースの無駄であろう。XvncがうごくのとVirtualBoxが生で動くからである。

それならば、VirtualBoxはXに直接書かずにVNCサーバーの機能をもってもらって、そこにつなけば良かろうという風になる。これはHeadlessモード、ウィンドウ非表示起動、と呼ばれるものである。ディスプレイなどのない環境では特に役に立つと思われる。

で、結論から言うと、状況は若干複雑で、
* VirtualBoxはデフォルトではVNCサーバーなどの機能を持たない。
* VirtualBox Extension Packを導入すると、RDP (remote desktop protocol)のサーバーは動かせるようになる。RDPクライアントはいくつか無料でダウンロードできる。
* VNCサーバーはそこに含まれておらず、別途コンパイルが必要となる。
となっている。

headlessの仕組みとしては、
* 仮想マシンのアドレスでVNCが動く訳ではない。考えてみれば当たり前だが、もしそうであれば、仮想マシン上のプログラムとしてVNCサーバーなりRDPサーバーを動かすことになる。
* headless用RDP/VNCは、ホストマシンのIPにはバインドできて、バインドしたIPのあるポートにアウトプットする、というイメージ。

RDPでの接続方法について紹介する。
* Extension Packの導入。
$ VBoxManage list extpacks
Extension Packs: 1
Pack no. 0:   Oracle VM VirtualBox Extension Pack
Version:      4.3.16
Revision:     95972
Edition:
Description:  USB 2.0 Host Controller, Host Webcam, VirtualBox RDP, PXE ROM with E1000 support.
VRDE Module:  VBoxVRDP
Usable:       true
Why unusable:

のようになっていたらok。VRDE Module: VBoxVRDPとなってるのが重要。

* 認証方式をnullへ(これは問題ありだが、とりあえずのテストとして)
VBoxManage modifyvm test --vrdeauthlibrary null

* VirtalBoxの立ち上げ
VBoxHeadless --startvm test -v on --vrdeproperty TCP/Address=192.168.1.3 --vrdeproperty TCP/Ports=5901
これは
192.168.1.3のアドレスで、portは5901ということ。
ということで、成功すると

Oracle VM VirtualBox Headless Interface 4.3.16
(C) 2008-2014 Oracle Corporation
All rights reserved.

VRDE server is listening on port 5902.

となります。失敗すると

VRDE server failed to start.
VRDE server is inactive.

となるので、portが競合してないか、設定が間違ってないかを確認してやり直しましょう。

* RDPクライアントから接続
いろいろありますが、
CoRD をとりあえず使ってます。無料だけでなく、気持ちよくremote desktopが使えます。
192.168.1.3:5901
でok
解像度を変更させるとおかしくなるみたいであった。
Microsoft Remote DesktopこれはMS謹製のもの。解像度の変更も問題なしのよう。バージョンも一番新しく、これがベストかもしれない。


* 解像度の問題(解決)
VirtualBoxのドライバの制限なのか、コントロールパネルからディスプレイ、画面の解像度とやっても1366x768はなかったので残念。そもそもVirtualBoxは親ウィンドウのサイズに解像度を合わせることができたのだが...
全画面表示にしたらよくなった。

* VNCはどこいった?
次は(気力があればw)、VNCをやってみようと思います。VNCは解像度変更ができないようで、そこはRDPのほうが偉いかなと。色々調べるとRDPのほうが偉いねぇ。VNCよりええなぁと思いました!
ただ、VNCはVirtualBoxのGUIを使うには良いので、今後もコントロール用に立ち上げると思います!

PDBからSTLへ: タンパク質を3Dプリンタで出力するまで

2014-09-11 16:04:16 | 日記
このブログエントリには3d-print-your-favorite-protein
を参考に、タンパク質のモデルを、OSXで3Dプリンタへ出力するのに必要なSTL形式に直す手順を記してある。

1. pymolでタンパク質を表示し、VRML2 形式でエクスポート

* show surfaceとすると見やすい
* File -> Save Image as -> VRML 2...

2. MeshLabで加工

できた形式は頂点と面数が大抵ものすごく多い。さらに分子模型も中に埋められている場合がある。プリントにも時間がかかるか、プリンタに送れないかしれない。そのためには、不必要な面および頂点を減らすとよい。

2.1 wrlファイルをimport
File -> import meshで VRML2形式をインポート

2.2 頂点や面を減らす
Filters -> Resampling, simplification and reconstruction -> Clustering decimation
で、prec on 0.2, 0.3 ... (数字が大きいと範囲も大きくなる)
とする。

サンプルのPDBを使ってみたところ、
オリジナルでは
Vertices: 440,2066
Faces : 778,3032
が、prec on 0.2で減らすと
Verteices: 199,965
Faces : 479,589
となり、prec on 0.3で減らすと
Verteices: 139,314
Faces : 286,539
となる。もっと減らしても良いかもしれない。

2.3 頂点や面を減らす2
Filters -> Resampling, simplification and reconstruction -> Quadratic Edge Collapse Decimation
で、Percentage Reductionを0.3とすると、

Verteices: 139,314
Faces : 286,539
から
Verteices: 72,571
Faces: 143,268
まで減った。

コメント: Quadratic Edge Collapse Decimationは品質は高いが時間も無駄にかかる。頂点数、面数が多いと途中で
止まることさえあった。Clustering decimationでざっくり減らしておいてから、Quadratic Edge Collapse Decimation
で減らすのが良いと思われる。

3. STLへエクスポート
File -> Export Mesh As で STLを選択し、セーブ。
これを3Dプリンタへ送れば良い。