本講義の目標: ・C言語とOpenGLを用いて,プログラミングによるコンピュータグラフィックス生成手法について学ぶ

Slides:



Advertisements
Similar presentations
C 言語講座第 5 回 構造体. 構造体とは ... 異なる型の値をまとめて新しい型とする 機能がある . つまり , 複数の変数を 1 つのまとまりにできる . 配列と違って同じ型でデータをまとめるのではな く違った型のデータをまとめられる .
Advertisements

初年次セミナー 第13回 2次元グラフィックス(1).
情報処理演習 (9)グラフィックス システム科学領域 日浦 慎作.
初年次セミナー 第8回 データの入力.
2014年度 プログラミングⅡ ~ Cプログラミングやってみよう ~.
2015年度 プログラミングⅡ ~ Cプログラミングやってみよう ~.
コマンドプロンプトの起動と終了 最初に覚えるコマンド ディレクトリ構造とパス 各種コマンドの練習 Cコンパイルとプログラムの実行
2013年度 プログラミングⅡ ~ Cプログラミングやってみよう ~.
数理情報工学演習第一C プログラミング演習 (第3回 ) 2014/04/21
リダイレクト パイプ 標準入出力プログラム コマンド行引数 関数 system()
システムプログラミング 第5回 情報工学科 篠埜 功 ヒアドキュメント レポート課題 main関数の引数 usageメッセージ
第14章 ファイル操作 (コマンドプロンプト版)
OSとコマンド OS:コンピュータを使うための基本プログラム コマンド:OS上で使用できる命令 OS本体であるカーネルの内部コマンド
情報科学1(G1) 2016年度.
プログラミングIII演習 第1回目.
プログラミング演習Ⅰ 課題2 10進数と2進数 2回目.
精密工学科プログラミング基礎 第9回資料 (12/11 実施)
初年次セミナー 第2回 文字の出力.
コンピュータグラフィックスS 第6回 第6回 レンダリング・パイプライン システム創成情報工学科 尾下 真樹
CGと形状モデリング 授業資料 長井 超慧(東京大学)
情報工学科 3年生対象 専門科目 システムプログラミング 第5回、第6回 ヒアドキュメント レポート課題 情報工学科 篠埜 功.
ちょっとした練習問題① 配列iroを['R', 'W', 'R', 'R', 'W' , 'W' , 'W']を宣言して、「W」のときの配列の番号をprintfで表示するようなプログラムを記述しなさい。
プロジェクト演習Ⅱ インタラクティブゲーム制作 イントロダクション2
Microsoft Visual Studio 2005 の使い方
C言語講習 第0章 Hello, world!.
関数の定義.
プログラミング応用 printfと変数.
電界中の電子の運動 シミュレータ作成 精密工学科プログラミング基礎 資料.
OpenGLを使ったプログラム作成 澤見研究室
第9回 卒業研究1
リダイレクト パイプ 標準入出力プログラム コマンド行引数 関数 system()
OpenGLライブラリを用いた3次元フラクタルの描画
コマンドプロンプトの起動と終了 最初に覚えるコマンド ディレクトリ構造とパス 各種コマンドの練習 Cコンパイルとプログラムの実行
プログラミング基礎a 第10回 Javaによる図形処理入門(2) GUIの使い方
第14章 ファイル操作 (コマンドプロンプト版)
単語登録(1) ◎MS-IMEの「単語登録」に、単語、語句、記号など自分がよく使うものを登録しておくと、便利である。
高度プログラミング演習 (02).
プログラミング演習(’04) ・ガイダンス ・簡単なプログラムの作成 ・aucopyの練習 ・今日の課題・宿題
湘南工科大学 2013年10月8日 プログラミング基礎1 湘南工科大学情報工学科 准教授 小林 学.
ゲームプログラミング講習  第3章 ゲーム作成 ブロック崩しを作ります ゲームプログラミング講習 第3章 ゲーム作成.
プログラミング基礎a 第10回 Javaによる図形処理入門(2) GUIの使い方
地域情報学 C言語プログラミング 第1回 導入、変数、型変換、printf関数 2016年11月11日
2013年度 プログラミングⅡ ~ はじめてのプログラミング ~.
精密工学科プログラミング基礎Ⅱ 第4回資料 今回の授業で習得してほしいこと: 文字列の扱い ファイル入出力の方法 コマンドライン引数の使い方
2017年度 プログラミングⅡ ~ はじめてのプログラミング ~.
2014年度 プログラミングⅡ ~ はじめてのプログラミング ~.
実数列を生成する際の注意 数学関数の利用 Excel によるリサージュ図形描画 Excel による対数グラフ描画
B演習(言語処理系演習)第2回 田浦.
C言語 はじめに 2016年 吉田研究室.
UNIX演習 情報ネットワーク特論資料.
高度プログラミング演習 (01).
UNIX演習 情報ネットワーク特論資料.
地域情報学 C言語プログラミング 第1回 導入、標準出力、変数 2017年10月13日
vc-2. Visual Studio C++ のデバッガー (Visual Studio C++ の実用知識を学ぶシリーズ)
情報基礎演習I(プログラミング) 第8回 6月8日 水曜5限 江草由佳
免許法認定公開講座: コンピュータグラフィックス
vc-1. Visual Studio C++ の基本操作 (Visual Studio C++ の実用知識を学ぶシリーズ)
バネモデルの シミュレータ作成 精密工学科プログラミング基礎 資料.
プログラミング基礎a 第9回 Java言語による図形処理入門(1) Javaアプレット入門
実数列を生成する際の注意 数学関数の利用 Excel によるリサージュ図形描画 Excel による対数グラフ描画
C言語講習 第0章 Hello, world!.
Visual Studio 2013 の起動と プロジェクトの新規作成 (C プログラミング演習,Visual Studio 2019 対応) 金子邦彦.
プログラミング入門2 第6回 関数 情報工学科 篠埜 功.
Cp-1. Microsoft Visual Studio 2019 C++ の使い方 (C プログラミング演習,Visual Studio 2019 対応) 金子邦彦.
単語登録(1) ◎MS-IMEの「単語登録」に、単語、語句、記号など自分がよく使うものを登録しておくと、便利である。
情報処理Ⅱ 2005年11月25日(金).
CGと形状モデリング 授業資料 1,2限: 大竹豊(東京大学) 3,4限: 俵 丈展(理化学研究所)
printf・scanf・変数・四則演算
岩村雅一 知能情報工学演習I 第7回(後半第1回) 岩村雅一
第1章 文字の表示と計算 printfと演算子をやります.
Presentation transcript:

本講義の目標: ・C言語とOpenGLを用いて,プログラミングによるコンピュータグラフィックス生成手法について学ぶ ・インタラクティブ性や,より高い自由度を持つアニメーションを生成する 本演習の作品例: ・C言語の基礎知識を前提とする ・提出課題は必ず大学のPCで動作を確認しておくこと

OpenGLの概要:  1980年代にSiliconGraphics社が自社製のグラフィックワークステーションIRIS用に提供したIRIS-GL(GraphicsLibrary)を もとにハードウエアに依存しないライブラリとして開発されたもの。約150種類のコマンドからなる。 void myInit ( char *progname ) { int width = 500, height = 500; glutInitWindowPosition( 0, 0 ); glutInitWindowSize( width, height ); glutInitDisplayMode( GLUT_RGBA ); glutCreateWindow( progname ); glClearColor ( 0.0, 0.0, 0.0, 1.0 ); glutKeyboardFunc( myKbd ); glMatrixMode( GL_PROJECTION ); glLoadIdentity(); glOrtho( -1.0, 1.0, -1.0, 1.0, -1.0, 1.0 ); } int main( int argc, char** argv ) glutInit( &argc, argv ); myInit( argv[0] ); glutDisplayFunc( display ); glutMainLoop(); return( 0 ); include <stdlib.h> #include <GL/glut.h> #include <GL/gl.h> #define KEY_ESC 27 void display( void ) { glClear( GL_COLOR_BUFFER_BIT ); glColor3f( 1.0, 1.0, 1.0 ); glBegin( GL_POLYGON ); glVertex3f( 0.5, 0.5, 0.0 ); glVertex3f(-0.5, 0.5, 0.0 ); glVertex3f(-0.5,-0.5, 0.0 ); glVertex3f( 0.5,-0.5, 0.0 ); glEnd(); glFlush(); } void myKbd( unsigned char key, int x, int y ) if ( key == KEY_ESC ) exit( 0 ); http://www.sfxbros.com/pages/backnumber/sgi002.html

OpenGLの長所: ・Unix,MS-Windows,MacOSなど代表的なプラットフォームに  対応し、移植性が高い ・描画用ハードウエアのサポートが多数ある ・3次元CGの描画機能がある ・コマンド体系が簡潔 ・標準C言語の知識でプログラミング可能 OpenGLの限界: ・3次元オブジェクトのモデルを記述する高水準コマンド無し ・シェーディングモデルはGouraudのみ(拡張手法あり) ・レイトレーシング無し

GLU:上位のユーティリティライブラリ.球体、円柱などのプリミティブ、NURBS曲線、透視変換、ビューイング変換、テクスチャ処理など OpenGLライブラリの構成: GLU OpenGL アプリケーションプログラム(ユーザが書くプログラム) 描画 GL ウィンドウシステム GLUT GL:OpenGLライブラリ.点、線、多角形の描画、色やパタンの制御、幾何変換や投影変換、シェーディング処理などの基本描画コマンド GLUT:OpenGLライブラリ.ウィンドウ管理や入力イベントの管理、GLとGLUを組み合わせた高度な描画

プログラムの作成方法: 1)各自のZドライブにVisというフォルダーを作る 2)その下に適宜各回用のフォルダ(例えば01)をつくる 3)01フォルダに移って、  「右クリック」→「新規作成」→「テキストドキュメント」 4)ファイル名を適当につける。例えばc1-1.c ただし、拡張子は必ず.cとする。 もし、拡張子が見えない場合は、Exploreの「ツール」→「フォルダオプション」→「表示」 の「登録されているファイルの拡張子は表示しない」のチェックをはずしておく。 5)TeraPadエディタ等でファイルを開きテキストをいれていく コンパイル・実行!

Cプログラムの簡単な復習:  以下のプログラムc1-0.cを打ち込んで実行する. #include <stdio.h> void hello (int num){ printf(“Hello World %d”,num,“ \n”); return; } int main(int argc,char* argv[]){ hello1(1); return; } プログラムのコンパイルと実行方法: A)コマンドプロンプトで行なう  1) 「スタート」→「プログラム」→「MicrosoftVisualStudio」                      → 「VSVARS32.BAT」 2)生成されたコマンドプロンプトウィンドウの中で   a)>cd 作成したフォルダパス=例えばvis\01   b)>cl c1-0.c (cl:「シーエル」コンパイルして実行形式ファイルをつくる)  c)> c1-0(実行) c1-0.cをコンパイルし、実行する。 (ビルド後実行.またはコマンドプロンプトで.)

実行! プログラムのコンパイルと実行方法: B)Visual Studioから実行 :キャンパスシステムガイド参照 あるいはこちら (VS2010Versionなので2013とは若干異なる)     debug解説  (ログイン後の最初の立ち上げには数分がかかります) ・VS2013では「デバッグ→ソリューションのビルド」でコンパイルする. ・編集する際はc1-0.slnをダブルクリックして立ち上げ,「表示→ソリューションエクスプローラでソースファイルが見られるようにする. ・実行ファイルはdebugフォルダに入っているが,単純にこれをダブルクリックすると実行後すぐウィンドウが閉じてしまうので「デバッグ」メニューから実行するか,コマンドプロンプト窓を開いて  >c1-0.exeを実行する 実行! 配布したプログラムc1-1.cをコンパイルリンクし,実行する. 大文字、小文字は区別されるので注意! 全角の空白をいれないように。 c1-1.pdf 

実行結果 x (0,0) height prognameで指定した名前がつけられる y width C1-1 画面サイズ

1)横640ドット、縦480ドットのウィンドウを画面中央に表示せよ (プログラム名はp1-1-1.cとする) 練習問題1-1: 1)横640ドット、縦480ドットのウィンドウを画面中央に表示せよ (プログラム名はp1-1-1.cとする) 使用しているディスプレイの総ドット数を調べるには int glutGet(GLUT_SCREEN_WIDTH); int glutGet(GLUT_SCREEN_HEIGHT); を用いる。 ヒント:横方向の原点 originw=(総ドット数-表示させるウィンドウサイズ)/2 解答例 2)ウィンドウの背景色をつぎの色に変えよ (プログラム名はp1-1-2y.c,p1-1-2p.c,p1-1-2b.cとする) a)黄色  (R,G,B)=(1.0,1.0,0.0) b)ピンク (R,G,B)=(1.0,0.0,1.0) c)水色  (R,G,B)=(0.0,1.0,1.0) glutGet(GLUT_SCREEN_WIDTH) width ?