OpenGL 入門サイト

めも。

OpenGLプログラミングメモ

Modern OpenGL Tutorials

OpenGL Wiki!

OpenGL de プログラミング

>初心に返るには、ココが良いかも。
OpenGLよくわかんない。なぜ難しいと感じるのか。(@kasuga log)

>最近できたばかりみたいだけど
モダンOpenGLチュートリアル 日本語版
こっちはその元のサイト
Tutorials for modern OpenGL (3.3+)

古典的輪郭表現

めも。

Silhouette Extraction

Tutorial 39 – Silhouette Detection

こっちは比較的新しい表現方法

Two Fast Methods for High-Quality Line Visibility
IEEE Transactions on Visualization and Computer Graphics, February 2010

Forrester Cole, Adam Finkelstein

Geometry Shader Silhouettes without Adjacency Information

その後

Unityベースで結構整理しているページを発見。

OpenGL SDK, WIndows SDK, DirectX SDK ..

自分 Vistaユーザー(Win8持ってるけど、未upgrade..)なので、ちょっと調べてみた。

OpenGL SDK

WindowsSDK(6.2.6000.0.18.WindowsSDK_Vista_JPN_daily.DVD.Rel.img)

DirectX SDK(DXSDK_Jun10.exe)

OpenGLは特にVistaがどうこうではなくて、どこにあるのか判りにくかった。
あと、上のリンクより OpenGL + GLSL(GLEW)を用いた開発環境の設定方法 の方がいいかも。。
OpenGL SDK のリンク先のだと、GLEWが入ってないかも。(GLSL関連が入ってない??)
また、glutも 64bit版を考えたら こちら などを見て、対応した方がよさそう。(glewは32/64bit両対応されていた)

DirectX関連については、当初VistaはDX11未対応で後追いで付いたので、WindowsSDKと別扱いだったりするくらいか。(対応するVSのバージョンが 2008や2010だし、今からこの環境をそろえる人もいないだろうから、一応メモっておく)

【その後】
最近のDirectXのサンプルコードをビルドしようとしたら、 directxmath.h がないと..
ぐぐったら、Windows8SDKが要るそうで。

DirectX Tool KitのReadme.txt(Documents) を翻訳してみた
Using the Windows 8 SDK with Visual Studio 2010 – configuring multiple projects

Windows環境も、最新追っかけなくなるととたんにめんどくさい..

Windows 8 用 Windows ソフトウェア開発キット (Windows SDK)
Windows 8.1 用 Windows ソフトウェア開発キット (Windows SDK)

SDKの説明を見ると、Vistaはシステム要件から外れている。
説明を読み進めると、『Windows Vista および Windows Server 2008 における .NET Framework 4.5 SDK』という項目がある。これが原因か?

説明では下記のように書かれていたが、Vista SP2(及びVS2010をフルインストール)環境で setup.exeを実行できた。

  1. サポートされるオペレーティング システム (Windows 7、Windows 8 など) で、Windows SDK for Windows 8 のインストーラーを実行します。
  2. [場所の指定] 画面で、[個別のコンピューターにインストールするために Windows SDK をダウンロードします] を選択し、[次へ] をクリックします。

(以下の手順は省略)

【その後のその後】
WIndows8 SDKをDLしたものの、肝心のSDK インストーラは動かず。

どうにも手詰まりな気配。。

【OpenGLのその後】
freeglut, glew の 64bitビルドで GLSLによるジオメトリシェーダ が動かせた。(使ったビデオカードはQuadro FX370 という超貧弱なカード, OSは Vista SP2 64bit, ビルド環境は VS2010)
ひとつだけエラーで調べないといけなかったのが、glut.hだけだと glutCloseFuncが未定義だといわれた点。何の設定が要るのか判らなかったので、とりあえず#include <GL/freeglut_ext.h> を追加定義して動かした..ここは、glut.hを freeglut.hに置き換えればいいだけだった..

結局、freeglutだろうとOpenGL SDK だろうと GLEWは要るらしいので、そこはライセンスの都合とかで必要な方を選べば良いのかも。

なんにしても今Vistaで環境構築するんだったら DirectX11環境作るより、OpenGL環境作る方がかなり楽な道だった..

Pyside QDialog を Escキーでいきなり閉じないようにする

Qt – Esc should not close the dialog
QDialogを閉じるときの処理の流れメモ

Escキーが押されると、QDialog.reject関数が呼ばれる。
通常はそのまま処理が実行され、ダイアログは閉じてしまう。

なので、reject関数をoverrideして 関数内に pass だけを書いておけば、無効にできる。
もしくは問い合わせのダイアログを出して、その結果により閉じるか。

ノードの上流を辿って指定タイプのノードを探す

なにに使うのかわからなくて困っているコマンド

findType(@Maya2012 help)

例えば、以下の処理はlocator1作成直後にはなにも返さないが、キーを打つと、time1ノードを返す。(deepフラグを使うと、複数ヒットする場合に全て取得できる。)

未だ使いどころが、いまいちわからない..

ん? animCurveとかこれで取得すれば手っ取り早い? のかな?

その後

 Maya2016で findtypeコマンドを使うと、うまくいかない場合があった。(不具合っぽい)

 listHistory + ls(typ=’タイプ指定’) の方が安定している模様…

アニメーションの付いたノードを選択したい

キーの付いたノードにはanimCurveが接続されているハズなので、animCurveをリストしてアニメーションが入力されるノードをlistConnectionsで取得。
listConnectionsの結果は重複要素もあるのでsetで要素を抽出して、それをselectする。
※setのままだとselectコマンドが怒るので、最後にsetの中身を取り出す為に 『 * 』を使っている。

QUILoaderで読み込んだUIに コンテキストメニューを割り当てる

Pyside..未だにたいしたことを知らなくて、掲題の件について調べてみた。

QUILoaderで読み込まない場合、QMainWindow.contextMenuEvent(self, event) というのがイベントハンドラになるのだけど、QUILoaderで読み込んだものだとこの関数がトリガーされない。

で、調べてみると、こんな設定が必要だった。

self.(QWidget名).setContextMenuPolicy(QtCore.Qt.CustomContextMenu)
self.(QWidget名).customContextMenuRequested.connect(self.contextMenuEvent)

要は、イベントが発生してもスルーされていただけで、設定しろよ。という話でした..チャンチャン..

コンテキストメニューの記述に関しては、このサイトとかにさらっとサンプルが置いてあったので参考にしました。

 

ちなみに、MayaPython&Pysideでパネル作っている場合に、sibokenで親ウィンドウをゴニョゴニョしているとメニューの解放処理の途中で意図しない状態になるようで、一回コンテキストメニューを選択すると次の表示が処理できないという状態にハマリました。。
現状、回避方法判らないので、コンテキストメニューを出す奴は仕方なく StayOnTopの属性設定を使ってます。orz

【その後】
2回目のメニュー表示が出来ない問題は、自分自身のダイアログを生成する際に、オーナー指定としてMayaのウィンドウを渡してなかったのが原因でした。。
uiファイルは widgetベースで作成して、自分自身はQDialogを継承して、uiloadで得たWidgetを自分の子としてLayout下に置けばOKでした。。。

『python pyside 親ウィンドウ』でググると簡潔に説明しているページがあったので、そっちも見てみると良いかもです。