asaのブログ

プログラミングの勉強まとめ

OpenGL 3次元に線を引く

 そういえばパソコンを変えました。モダンOpenGLをやっと使える…んですが環境構築がまだ終わっていないので、未だにレガシーなOpenGLを使って勉強してます。

 

 やや分かりづらいタイトルですが、端的に言うとOpenGLでは2次元の線を描いているように見えて3次元に線を描いていたりします。

 

 極座標と線を使って図形を書いたものがこちらです。キーで回転できるようになっています。

 

f:id:asa_r:20170818231628p:plain

f:id:asa_r:20170818231641p:plain

 

コード

gist40a6bcb855dc40f1f28f933b63a3870d

 

 

C++ 代入演算子のオーバーロード~継承とアクセス制御

 山口から東京に引越しました。しばらくコードが打てなかったので今最高に楽しいですね。とりあえずC++の基礎練からです。

 

 

gistdc307d27006a2105a4ad1b152a468fa8

gist95f4706f5674a5b4005d457d16fa2474

gistfc87fbc7695273d4866be6632c9a720d

gist98c6e409f583a85cf3bc51436f21f0ad

gist055103ce74c2abbf1fe21c2b6ba2e1e2

Qtの組み込みウィジェット・ダイアログ

 Qtで利用できる組み込みウィジェットとダイアログを一覧でまとめておきます。

 Qtによる開発はこれらを利用して、主にQMainWindowに実装する形で行われます。また必要に応じてこれらのクラスを継承してカスタムダイアログ・ウィジェットを作るわけです。

 Qt全体を整理するのにも役立つので備忘録として記載しておきます。

 

 ボタンウィジェット

  1.  QPushButton
  2.  QToolButton
  3.  QCheckBox
  4.     QRadioButton

 コンテナウィジェット

  1.  QGroupBox
  2.  QFrame
  3.  QTabWidget
  4.  QToolBox

 アイテムビューウィジェット

  1.  QListView
  2.  QTreeView
  3.     QTabView

 表示系ウィジェット

  1.  Qlabel
  2.     QLCDNumber
  3.     QProgressBar
  4.  QTextBrowser

 入力系ウィジェット

  1.  QSpinBox
  2.     QDoubleSpinBox
  3.     QComboBox
  4.     QDateEdit
  5.     QTimeEdit
  6.     QDateTimeEdit
  7.     QScrollBar
  8.     QSlider
  9.     QTextEdit
  10.     QDial

 組み込みダイアログ

  1.  QColorDialog
  2.     QFontDialog
  3.     QPageSetupDialog
  4.     QFileDialog
  5.     QPrintDialog
  6.     QOutputDialog
  7.     QProgressDialog
  8.     QMessageDialog
  9.     QErrorMessage

 

 正直使ったことがないものもあるのでなかなか新鮮!

 

コンピュータ・グラフィックスの動向 SIGGRAPH2017から

 コンピュータ・グラフィックスの世界的な祭典・会議SIGGRAPHがそういえば今日閉幕しました。今年SIGGRAPH Awardを受賞した人達を紹介しつつ、最近のコンピュータ・グラフィックスの動向を見たみたいと思います。

 

www.siggraph.org

 

1.Jessica Hodgines

 カーネーギー・メロン大学教授。直近ではディズニー研究所に在籍。キャラクター・アニメーションの分野に多大な貢献をした。動きに着目した研究でキャラクターや物体に対して非常に滑らかな動きを与えることに成功し、さらにその滑らかな動きをロボット工学にも応用した。

 生涯を通してコンピュータ・グラフィックスに貢献した人に送られるThe  Steaven A Coons賞を受賞されました。過去にこの賞を受賞された人を見るといずれも伝説級の人達ばかりです。サザーランド教授、ベジエ曲線を開発したベジエ、エド・キャットムル等が受賞しています。

 たしかに著作の量も活動の活発さも人並み外れた活躍をしています。

 論文:Disney Research » Jessica Hodgins

    https://scholar.google.com/citations?user=vswo4rQAAAAJ&hl=en

 

2.Ramesh Raskar

 MITのメディア・ラボに在籍。瞳の屈折をスマートフォンで診断できるEyeNetra等を開発。一秒間に一兆回捕らえることができるカメラを開発し、光の動きを正確に捉えることに成功した。

Overview ‹ Ramesh Raskar — MIT Media Lab

 

3.Bernd Bickel

 コンピュータ・グラフィックスにおける新人賞を受賞。顔の構造や動きのモデリングに対して新技術を導入し、素早く3Dとしてモデル化することを可能にした。物体の構造、特徴、概観をモデリングする技術は工業分野にも応用された。

 

 概括

 このほかに優秀な博士論文に送られる賞や、アーティストに送られる賞などが授与されました。全体を通してみると、物体のとくに”動き”を分析し、精緻に再現するような研究が目立ちました。

 CGの分野は十分に成熟したものと思っていましたが、これだけ優秀な人達を以ってしてもいまだ研究が尽きないあたり、人間や物体の動きにはまだまだ学ぶところがあるようです。

WebGL チュートリアル1

 GLSLを勉強したかったのですが、生憎パソコンがOpenGL3以降に対応していなかったのでずっとレガシーなOpenGLを使用していました。

 

 モダンなOpenGLではこの固定パイプラインを使用しない点で決定的にレガシーなOpenGLと異なっています。

 

 そこで、OpenGLを直接扱うのではなく、ブラウザで2D、3Dを扱うことができるWebGLを扱ってみました。ちなみに今回はNetbeansを使用して開発をしています。

 

 参考はこちら:WebGL 開発支援サイト wgld.org

 

 三角形を表示すると次のようになります。 

f:id:asa_r:20170803212921p:plain

 

 コード

 ほぼ写経ですが、OpenGLをやっていたおかげで分からなくはないです。Cっぽいですね。共通するところも多いので少しずつ詰めていきます。

gist3448b0b29b1f15b91c0919fe345fd043

 

 

 

 

 

C++ コンストラクタのオーバーロード~

 いつもどおりの基礎練です。

 

gist853181548f4ce7d2e82b42c48d7cbbaa

gist8d2a206e082cedadb11c3f2d7f48b474

gistd5333f021c9f1eaad921f6019e4f6ba1

gist3ec1bd42e3ccb7a9a4d35619fff3fb84

gist5c872d02192e35696f003fe5ab7413be