SketchyPhysicsが動作しない
SketchUp上で3次元版のPhunのようなことができるSketchyPhysicsを試そうとしたら、Ver.3だと再生ボタンを押しただけでSketchUpごとクラッシュしてしまう現象に遭遇…。
対象とするオブジェクトが何もない状態でもこのようになってしまう。
確認するとVer.2では動作しており、Ver.3がメンテされていないせいかと思っていたが、最新版のVer.3.1でも同様に動作しないし、パソコンによっては動作するものもあるし、また、ちょっと前までVer.3が動かなかったはずのノートパソコンが(crcdisk.sys(検索)とかいうやつ絡み?)のエラーでやむなく再セットアップをしたら、こちらではVer.3も動作している。これらからすると、どうもパソコンのスペック(グラフィックカードの種類など:
- Which graphics cards are recommended for SketchUp? – SketchUp Help
- What is a graphics card and a graphics driver? – SketchUp Help
- Graphic Cards for SketchUp – SketchUp4Architect
)の問題ではなくて、もしかするとこちらが他で使用しているアプリケーションなどとの相性があるのかもしれない。(何より同様の現象が発生しているとの報告例が皆無というのが不思議)。
それはともかく、メインで使っているデスクトップで動作しないのは困るので、プラグインのRubyファイルで動作を追ってみた。
どうやら NewtonServer3.dll を読み込んだ後の初期化で失敗しているようだ。SkethcyPhysicsTool.rbの冒頭で初期値をSPSETTINGSという辞書へ登録しているのだが、
def self.setDefaultPhysicsSettings() Sketchup.active_model.set_attribute( "SPSETTINGS", "defaultobjectdensity", "0.2") Sketchup.active_model.set_attribute( "SPSETTINGS", "worldscale", "9.0") Sketchup.active_model.set_attribute( "SPSETTINGS", "gravity", "1.0") Sketchup.active_model.set_attribute( "SPSETTINGS", "framerate", 3) #Sketchup.active_model.set_attribute( "SPSETTINGS", "water", 1) end
これを実際にNewtonServerへ送信する際に動作が停止するらしい。上記の設定キーではどれを指定してもエラーになる(”water”は元からコメントアウトされているのでとりあえず対象外)。
しょうがないので、これを取り止めてみた。
--- orig//SketchyPhysicsTool.rb 2010-10-06 23:10:04.000000000 +0900 +++ ./SketchyPhysicsTool.rb 2010-10-24 23:48:58.857403500 +0900 @@ -749,7 +749,7 @@ if(dict!=nil) dict.each_pair { | key, value | - NewtonServer.newtonCommand("set",key+" "+value.to_s) + #NewtonServer.newtonCommand("set",key+" "+value.to_s) puts key+"="+value if $debug } end
newtonCommandで”set”を実行するのがまずいようだ(とはいえ、他でnewtonCommandの呼び出しは使用されていないようだが…)。
現在のところ上記で簡単な動作確認はできている。
なお、「NewtonServer3.dll」というやつを入れ替えて最新にしたりすればいいかとも考えたが、検索してもさっぱり情報が出てこないし、そういうファイルはNewtonのサイトで配布されているSDKにも含まれていないようだ。そこの最新は09/19/2210(←2010の間違い?)の段階で「BETA Newton 2.0」のようで、3というのはないし…。ちょっと状況がよくわからない。
Engines and Wappersの一覧にはSketchyPhysicsも含まれてるんで、おそらくこのプロジェクトのファイルを使用しているのは間違いないだろうと思うのだけど…。