めもめも ...〆(。_。)
認知心理学・認知神経科学とかいろいろなはなし。 あるいは科学と空想科学の狭間で微睡む。
×
[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。
ここのところPsychtoolboxのScreenについてずっと苦戦していたのだけど、その理由と解決方法がわかったのでめも。
ScreenはPsychtoolboxで何か描画するときにつかうので、たいへん便利&必須なのだけど、こいつが動かないのであった。
最初はScreenの引数が何を指しているのかを確認するだけで手いっぱいだったので、自分がへんな書き方したのだと思っていたのだけども、Psychtoolboxを紹介しているサイトのプログラム(これとか)をべた書きしてもエラーを吐くので、もうちょっと丹念にエラーを読んでみた。
…ちうか最初っからエラーをチェックしろって話ですが、最初はフルスクリーンで描画していたのですよ。
フルスクリーン描画→かたまる→終了コマンド受け付けぬ→詰む→強制終了、というコース。
これだとエラー何言ってるのか読めないのですな。
ScreenつくるときはScreen('OpenWindow'…ってやつから始めるのですが、こいつはデフォルトがフルスクリーンなんですよ。
でふぉのままはじめちゃうといかんですな。
ちゃんと大きさ指定して小さいウィンドウで確認してから試さねばならぬ。
んでエラーメッセージを見てみると、どうも「vertical retrace (VBL) is not working」とかなんとかで、Psychtoolboxと画面の描画の同期がうまくとれてないとかなんとかそういう話らしい。
help SyncTrouble
でヘルプを読んでみろ、とかいうし。
まあ内容はここからでも読めるんですけど。
これはスペックの低いPCだとよくおこるエラーらしくって、
Screen('Preference', 'SkipSyncTests', 1)
で同期チェックをすっとばすことも可能なんだそうですが、これやるとプログラム内のイベントの時間の正確さは担保されないらしい。
おおらかな実験、デモ、とりあえずの確認ならばいいけど反応時間をとる場合は鬼門ですな。
しかし、そんなにスペック優良というわけではないけども一応OpenGL対応のPCつかってるのにスペック原因でエラーになるものだろうか?
という疑問がわいてきて、ちょっとじっくりヘルプを検討してみることにした。
んでヘルプにはいくつか解決策が提案されているんですが、英語でぼんやりとしか書いてないのでちょっと戸惑う。
あとマルチディスプレイの場合起こりやすいエラーみたいですけどわたしは別にマルチディスプレイしてないのでそこの部分は関係ない。
とりあえずやってみた対策(とその方法)としては
1)グラフィックドライバの更新
コントロールパネル→デスクトップのカスタマイズ→ディスプレイを選択
↓
画面の解像度、で出てくるウィンドウの真ん中あたりにある「詳細設定」をクリック
↓
アダプターのタブの「アダプターの種類」ってところの「プロパティ」ボタンをおす
↓
そしたら当該のグラフィックデバイスのプロパティのウィンドウが出てくるから、「ドライバー」のタブを選択
↓
「ドライバーの更新」ぼたんをぽちる。
今の環境はWindows7なので他OSだとコントロールパネルからの名称がちょっと違ったかも。まあでもだいたい雰囲気いっしょのやつを選べばだいたいいける(なんというふわふわした解説)。
2)vertical retrace (VBL)を設定する
これは日本語だと垂直リフレッシュとか垂直同期とかいうらしい。
よくわかってないけど、いわゆるリフレッシュレートにあわせて画面を描画するとかなんとか。
そのへんのことはPythonで心理実験解説サイトのこのページにくわしい。ちゃんと知りたい人は読もう。
まあエラーで指示されてたのはこのへんだろうと目星をつけたというわけです。
これの設定のしかたはどの会社のグラフィックカードをつかってるかによって変わってくる。
まあ一口で言ってしまうと、どの会社だろうと専用のコントロールパネルがあるのでそれで設定しろ、ということになるのだけれど。
ノートPCに多いIntel系だと、インテルHDグラフィックスコントロールパネルとかいうとこで設定できるそうな。
公式に案内があるからそれを読むべし。
あ、注意しないといけないのは、インテルでは垂直同期は「非同期反転」という項目になってるからいじるのはそこな。
NVIDIA系だと、NVIDIAコントロールパネルの3D管理で垂直同期の設定ができるそうな。
わたしのつかってるPCはRadeon系なのですが、Radeon系はコントロールパネルっていうかソフトウェアっぽいかんじ。
あれコントロールパネルもソフトか…?
いやまあとりあえずそのへんはおいといて、コントロールパネルみたいな「設定」から呼び出すというよりも、「すべてのプログラム」から呼び出すという点でよりソフトっぽい。
んでもってこのへんの設定、PCでゲームする人たちはちょくちょくいじるところのようで、ゲーマーの解説が一番わかりやすかった。
わたしが見たのはここ。
…ちょっと世界が違いすぎて気恥ずかしいけどまあいいや。
以前?は「Catalyst Control Center」とかいうソフトがはいってるっぽいけどわたしのは違った。
AMD Vision Engine Control Centerというらしい。
公式によるとCatalystを統合してるっぽいからまあだいたいいっしょだろう。
ぱっと調べたとこUIもだいたいいっしょっぽいし。
んでControl Center起動するのはいいんだけど、デフォルトのままだとなんと垂直同期云々にはたどり着けない。
なのでまず右の「設定」というところ(下図参照)をくりっくして、「詳細表示」にチェックをいれて画面を詳細設定用に切り替える。
そしたら左にいっぱい項目がでるので、「ゲーム」の項目を選択し、3Dアプリケーション設定をクリック。
(描画設定いらうのゲームだけじゃないだろ…)
んで「フレームレートコントロール」の「垂直リフレッシュを待機する」を「常にオン」にしておく。
ついでに「オープンGLトリプルバッファリング」も「オフ」になってるか確認。なってなかったらオフ。
3)なんかエラーがDWMを無効化しろって言ってたからする
DWMはようわからんけどどうもDesktop Windows Manegerというものではないかとあたりをつける。
コントロールパネル→システムとメンテナンス→システム→システムの詳細設定を選択
↓
詳細設定タブの「パフォーマンス」の項目の「設定」ボタンをクリック
↓
視覚効果のタブで、デザインとパフォーマンスに使う設定を「カスタム」選んで、「デスクトップ コンポジションを有効にする」のチェックを外す。
ついでに「これいらんやろ」と思った視覚効果も外しておけばいい。
まあにぎやかしにあってもいい。
そのへんは趣味の問題。
これに関して参考にしたのはhpのページ。
まあこれVistaについての説明なんですけど。
コントロールパネルからのたどり方以外はだいたいいっしょ。
このへんの設定をして、念のために再起動してからScreenつかうやつをはしらせてみたら今のところエラーをはかなくなった。
めでたしめでたし。
あ、でも長時間PCつかってるとエラーでるかもよ(そんときは再起動してね)ってヘルプが言ってたし、これで完全に対応できたかどうかはぶっちゃけようわからん。
まあエラーが出ないならいいとしよう。
とりあえず描画ができるようになったのでよかった。
(志低いな、というツッコミは自動で却下されました)
ScreenはPsychtoolboxで何か描画するときにつかうので、たいへん便利&必須なのだけど、こいつが動かないのであった。
最初はScreenの引数が何を指しているのかを確認するだけで手いっぱいだったので、自分がへんな書き方したのだと思っていたのだけども、Psychtoolboxを紹介しているサイトのプログラム(これとか)をべた書きしてもエラーを吐くので、もうちょっと丹念にエラーを読んでみた。
…ちうか最初っからエラーをチェックしろって話ですが、最初はフルスクリーンで描画していたのですよ。
フルスクリーン描画→かたまる→終了コマンド受け付けぬ→詰む→強制終了、というコース。
これだとエラー何言ってるのか読めないのですな。
ScreenつくるときはScreen('OpenWindow'…ってやつから始めるのですが、こいつはデフォルトがフルスクリーンなんですよ。
でふぉのままはじめちゃうといかんですな。
ちゃんと大きさ指定して小さいウィンドウで確認してから試さねばならぬ。
んでエラーメッセージを見てみると、どうも「vertical retrace (VBL) is not working」とかなんとかで、Psychtoolboxと画面の描画の同期がうまくとれてないとかなんとかそういう話らしい。
help SyncTrouble
でヘルプを読んでみろ、とかいうし。
まあ内容はここからでも読めるんですけど。
これはスペックの低いPCだとよくおこるエラーらしくって、
Screen('Preference', 'SkipSyncTests', 1)
で同期チェックをすっとばすことも可能なんだそうですが、これやるとプログラム内のイベントの時間の正確さは担保されないらしい。
おおらかな実験、デモ、とりあえずの確認ならばいいけど反応時間をとる場合は鬼門ですな。
しかし、そんなにスペック優良というわけではないけども一応OpenGL対応のPCつかってるのにスペック原因でエラーになるものだろうか?
という疑問がわいてきて、ちょっとじっくりヘルプを検討してみることにした。
んでヘルプにはいくつか解決策が提案されているんですが、英語でぼんやりとしか書いてないのでちょっと戸惑う。
あとマルチディスプレイの場合起こりやすいエラーみたいですけどわたしは別にマルチディスプレイしてないのでそこの部分は関係ない。
とりあえずやってみた対策(とその方法)としては
1)グラフィックドライバの更新
コントロールパネル→デスクトップのカスタマイズ→ディスプレイを選択
↓
画面の解像度、で出てくるウィンドウの真ん中あたりにある「詳細設定」をクリック
↓
アダプターのタブの「アダプターの種類」ってところの「プロパティ」ボタンをおす
↓
そしたら当該のグラフィックデバイスのプロパティのウィンドウが出てくるから、「ドライバー」のタブを選択
↓
「ドライバーの更新」ぼたんをぽちる。
今の環境はWindows7なので他OSだとコントロールパネルからの名称がちょっと違ったかも。まあでもだいたい雰囲気いっしょのやつを選べばだいたいいける(なんというふわふわした解説)。
2)vertical retrace (VBL)を設定する
これは日本語だと垂直リフレッシュとか垂直同期とかいうらしい。
よくわかってないけど、いわゆるリフレッシュレートにあわせて画面を描画するとかなんとか。
そのへんのことはPythonで心理実験解説サイトのこのページにくわしい。ちゃんと知りたい人は読もう。
まあエラーで指示されてたのはこのへんだろうと目星をつけたというわけです。
これの設定のしかたはどの会社のグラフィックカードをつかってるかによって変わってくる。
まあ一口で言ってしまうと、どの会社だろうと専用のコントロールパネルがあるのでそれで設定しろ、ということになるのだけれど。
ノートPCに多いIntel系だと、インテルHDグラフィックスコントロールパネルとかいうとこで設定できるそうな。
公式に案内があるからそれを読むべし。
あ、注意しないといけないのは、インテルでは垂直同期は「非同期反転」という項目になってるからいじるのはそこな。
NVIDIA系だと、NVIDIAコントロールパネルの3D管理で垂直同期の設定ができるそうな。
わたしのつかってるPCはRadeon系なのですが、Radeon系はコントロールパネルっていうかソフトウェアっぽいかんじ。
あれコントロールパネルもソフトか…?
いやまあとりあえずそのへんはおいといて、コントロールパネルみたいな「設定」から呼び出すというよりも、「すべてのプログラム」から呼び出すという点でよりソフトっぽい。
んでもってこのへんの設定、PCでゲームする人たちはちょくちょくいじるところのようで、ゲーマーの解説が一番わかりやすかった。
わたしが見たのはここ。
…ちょっと世界が違いすぎて気恥ずかしいけどまあいいや。
以前?は「Catalyst Control Center」とかいうソフトがはいってるっぽいけどわたしのは違った。
AMD Vision Engine Control Centerというらしい。
公式によるとCatalystを統合してるっぽいからまあだいたいいっしょだろう。
ぱっと調べたとこUIもだいたいいっしょっぽいし。
んでControl Center起動するのはいいんだけど、デフォルトのままだとなんと垂直同期云々にはたどり着けない。
なのでまず右の「設定」というところ(下図参照)をくりっくして、「詳細表示」にチェックをいれて画面を詳細設定用に切り替える。
そしたら左にいっぱい項目がでるので、「ゲーム」の項目を選択し、3Dアプリケーション設定をクリック。
(描画設定いらうのゲームだけじゃないだろ…)
んで「フレームレートコントロール」の「垂直リフレッシュを待機する」を「常にオン」にしておく。
ついでに「オープンGLトリプルバッファリング」も「オフ」になってるか確認。なってなかったらオフ。
3)なんかエラーがDWMを無効化しろって言ってたからする
DWMはようわからんけどどうもDesktop Windows Manegerというものではないかとあたりをつける。
コントロールパネル→システムとメンテナンス→システム→システムの詳細設定を選択
↓
詳細設定タブの「パフォーマンス」の項目の「設定」ボタンをクリック
↓
視覚効果のタブで、デザインとパフォーマンスに使う設定を「カスタム」選んで、「デスクトップ コンポジションを有効にする」のチェックを外す。
ついでに「これいらんやろ」と思った視覚効果も外しておけばいい。
まあにぎやかしにあってもいい。
そのへんは趣味の問題。
これに関して参考にしたのはhpのページ。
まあこれVistaについての説明なんですけど。
コントロールパネルからのたどり方以外はだいたいいっしょ。
このへんの設定をして、念のために再起動してからScreenつかうやつをはしらせてみたら今のところエラーをはかなくなった。
めでたしめでたし。
あ、でも長時間PCつかってるとエラーでるかもよ(そんときは再起動してね)ってヘルプが言ってたし、これで完全に対応できたかどうかはぶっちゃけようわからん。
まあエラーが出ないならいいとしよう。
とりあえず描画ができるようになったのでよかった。
(志低いな、というツッコミは自動で却下されました)
この記事にコメントする
カレンダー
10 | 2024/11 | 12 |
S | M | T | W | T | F | S |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
カテゴリ説明
もっさり:日々の雑感をもっさり。
がっつり:論文や研究関連をがっつり。
びっくり:科学ニュースでびっくり。
まったり:空想科学などでまったり。
ばっかり:デザイン系自己満足ばっかり。
ほっこり:お茶を嗜んでほっこり。
がっつり:論文や研究関連をがっつり。
びっくり:科学ニュースでびっくり。
まったり:空想科学などでまったり。
ばっかり:デザイン系自己満足ばっかり。
ほっこり:お茶を嗜んでほっこり。
最新コメント
※SPAMが多いのでhttpを含むコメントと英語のみのコメントを禁止しました※
最新記事
(05/08)
(04/24)
(04/10)
(02/03)
(11/01)
最新トラックバック
プロフィール
HN:
az
性別:
非公開
自己紹介:
興味のあるトピックス
分野は視覚認知。視知覚にがて。
あと記憶全般。
カテゴリ (semanticsか?) とかも。
最近デコーディングが気になる。
でも基本なんでもこい。
好奇心は悪食。
好きな作家(敬称略)
川上弘美
小林秀雄
津原泰水
森茉莉
レイ・ブラッドベリ
イタロ・カルヴィーノ
グレッグ・イーガン
シオドア・スタージョン
分野は視覚認知。視知覚にがて。
あと記憶全般。
カテゴリ (semanticsか?) とかも。
最近デコーディングが気になる。
でも基本なんでもこい。
好奇心は悪食。
好きな作家(敬称略)
川上弘美
小林秀雄
津原泰水
森茉莉
レイ・ブラッドベリ
イタロ・カルヴィーノ
グレッグ・イーガン
シオドア・スタージョン
ブログ内検索
最古記事
(08/05)
(08/16)
(08/19)
(08/19)
(08/21)
カウンター
フリーエリア
PR