免許法認定公開講座: コンピュータグラフィックス

Size: px
Start display at page:

Download "免許法認定公開講座: コンピュータグラフィックス"

Transcription

1 演習内容 免許法認定公開講座 : コンピュータグラフィックス 第 6 回 3 次元グラフィックス演習 基本的な3 次元グラフィックスのプログラムを作成 OpenGL を使ったポリゴン描画 視点操作 アニメーション 九州工業大学情報工学部システム創成情報工学科尾下真樹 参考書 最低限の関数は資料で説明 OpenGLの定番の本 ( 高い ) OpenGLプログラミングガイド ( 赤本 ), 12,000 円 OpenGLリファレンスマニュアル ( 青本 ), 8,300 円 共に ピアソン エデュケーション出版 入門書 OpenGL 入門, 3,000 円 エドワード エンジェル著 滝沢徹 牧野祐子訳 ピアソン エデュケーション出版 赤本の廉価版的位置づけ 演習環境 C 言語 開発環境として Borland C++ を使用 プログラムの記述にはテキストエディタを使用 OpenGL + GLUT ライブラリ OpenGL Z バッファ法によるポリゴン描画 GLUT OpenGL を使ったプログラムを簡単に作成する補助ライブラリ まずは サンプルプログラムをコンパイルしてみましょう! サンプルプログラム データ opengl.cpp OpenGL&GLUT を使ったサンプルプログラム bitmap.h, bitmap.cpp BMP 画像の読み書きのための関数のヘッダファイルとソースファイル ( 後で使用 ) kushu.bmp サンプルのテクスチャ画像 ( 後で使用 ) サンプルプログラムのコンパイル コンパイル bcc32 -DWIN32 opengl.cpp コンパイルに成功すると opengl.ee が生成される 動作確認 opengl.ee を実行してみる 地面 +1 枚のポリゴンを描画 マウスの右ドラッグで視点回転 1

2 コンパイルの手順 (1) サンプルプログラム一式を適当なフォルダに置く ここでは 仮に D: opengl に置くとする コマンドプロンプトを起動 スタートメニューから スタート プログラム アクセサリ コマンドプロンプトを選択 コンパイルの手順 (2) コマンドプロンプト上で プログラムソースを置いたディレクトリに移動し コンパイル ディレクトリ名は 適宜 自分がファイルを置いた位置に書き換える Dir と入力すると ファイル一覧が確認できる 1 プログラムソースを置いたディレクトリに移動 1 行目 D ドライブに移動 2 行目指定ディレクトリに移動 2 コンパイルを実行 プログラムの修正 テキストエディタを使って プログラムを書き換える サクラエディタ を使ったプログラムの書き換え opengl.cpp を右クリックし SAKURAで開く OpenGL & GLUT 入門 プログラムを変更したら 再度コンパイルして実行 ( 再コンパイルを忘れないこと!) OpenGL OpenGL 現在 最も広く使われている 3 次元 API C 言語を始め いろんな言語から使える ポリゴンの描画 Zバッファなどの3 次元描画に必要な機能を提供 ウィンドウ生成やマウス キーボード入力などの処理の機能は持たない これらは OSやウィンドウシステム固有の機能なので 各環境に応じたAPIを使って記述する必要がある 実装が大変 環境ごとに実装する必要がある GLUT OpenGL Utilit Toolkit (GLUT) ウィンドウ生成やイベント処理などの環境依存の部分を共通化したライブラリ OpenGL 標準ではないがかなり広く普及している 内部に各 OS 用のコードを含んでいるため 一度プログラムを作ればいろんな環境で動く 機能が限定されている代わりに非常にシンプル とりあえず OpenGL を使いたい場合に適している OpenGL と GLUT を混同しないように注意 2

3 ウィンドウシステムでのプログラミング イベントドリブン型プログラム ウィンドウシステムと協調して動作するプログラムを作成する必要がある ウィンドウシステム Windows などの グラフィカルなインターフェースを持つシステム ウィンドウ管理やマウス操作などはシステムが処理 ユーザプログラムは 初期化処理を行った後は処理をウィンドウシステムに移す ウィンドウシステムは 画面の再描画やマウスの操作などのイベントが起こるたびにユーザプログラムに処理を一時的に戻す ( イベントドリブン型 ) コンソール プログラム 理の流れメイン処理処GLUTのイベントモデル ユーザ プログラム 初期化処理 終了処理 ウィンドウ プログラム ( イベントドリブン ) ユーザ プログラムウィンドウシステム初期化処理描画マウス処理入力待ち処理アニメーション処理終了処理 GLUT のイベントモデル イベントループとコールバック イベントが起こった時にそのイベントを処理する関数をあらかじめ登録しておく プログラムは初期化が終わったら GLUT に処理を移す マウス操作などのイベントが起こったらあらかじめ登録した関数が呼ばれる ( コールバック ) これらの処理をコールバック関数として GLUT に登録 ユーザ プログラム初期化処理描画マウス処理 GLUT 入力待ち処理 アニメーション処理 終了処理 OpenGL の関数名 gl~ で始まる関数 OpenGL の標準関数 glu~で始まる関数 OpenGL Utilit Librar の関数 OpenGLの関数を内部で呼んだり 引数を変換したりすることで 使いやすくした補助関数 glut~で始まる関数 GLUT(OpenGL Utilit Toolkit) の関数 正式にはOpenGL 標準ではない OpenGL の関数名 同じ機能で 微妙に違う名前の関数がある 例 : glverte3f(,, ), glverte3d(,, ) f は引数が float 型であることを表す d は引数が double 型であることを表す C 言語なので 関数のオーバーロード ( 同じ名前で引数が異なる関数 ) はサポートしていない 必要に応じて使い分ける 3

4 サンプルプログラムの構成 グローバル変数の定義 コールバック関数 displa() reshape() mouse() motion() idle() initenvironment() main() コールバック関数 displa() 再描画が必要な時に呼ばれる 地面と 1 枚のポリゴンを描画 reshape() ウィンドウサイズ変更時に呼ばれる ウィンドウサイズに応じて視界 ビューポート変換の設定 mouse() マウスのボタンが押されたとき 離されたときに呼ばれる 右ボタンの押下状態を記録 motion() マウスがウィンドウ上でドラッグされたときに呼ばれる 右ドラッグに応じて視点の回転角度を変更 idle() 処理が空いた時に定期的に呼ばれる サンプルプログラムの構成 GLUT の初期化 ( メイン関数 ) main() 関数 initenvironment() 関数 displa() 関数 mouse() 関数 motion() 関数 idle() 関数 ユーザ プログラム初期化処理描画マウス処理アニメーション処理 GLUT glutmainloop() 入力待ち処理 GLUT の初期化 glutinit() glutinitdisplamode() glutinitwindowsie() glutinitwindowposition() glutcreatewindow() glutmainloop() main() 関数 終了処理 各関数の説明は省略 コールバック関数の設定 ( メイン関数 ) コールバック関数の設定 関数の引数として関数を渡す ( 特殊な使い方 ) glutdisplafunc() glutreshapefunc() glutmousefunc() glutmotionfunc() glutidelfunc() 描画のための設定 ( 初期化関数 ) initenvironment() 関数 描画に必要な最低限の設定 光源情報の設定 機能の有効化 ( 色指定 隠面消去 背面消去 ) 背景色の設定 各関数の説明は省略 光源情報などは変更しなくても構わない 4

5 描画処理 dspla() 関数 画面のクリア (glclear() 関数 ) 変換行列の設定 ( ワールド座標系 カメラ座標系 ) 光源位置の設定 地面のポリゴンの描画 変換行列の設定 ( モデル座標系 カメラ座標系 ) ポリゴンの描画 描画画面を表示 (glswapbuffers() 関数 ) 変換行列の設定とポリゴン描画については 後で詳しく説明 ウィンドウサイズ変更時の処理 reshape() コールバック関数 ウィンドウ内の描画範囲を設定 glviewport() 関数 ここでは 画面全体に描画を行うように設定 射影行列の設定 gluperspective() 関数 ここでは 標準な射影になるよう設定 ( 視野角 45 ) どちらも 描画を行う上で欠かせない設定 マウス操作時の処理 マウス操作のコールバック関数 mouse() 関数 マウスのボタンが 押されたとき または 離されたときに呼ばれる motion() 関数 マウスのボタンが押された状態で マウスが動かされたときに定期的に呼ばれる ボタンが押されない状態で マウスが動かされたときに呼ばれる関数もある ( 今回は使用しない ) アイドル時の処理 描画やマウス入力を処理する必要がないときに定期的に呼ばれる関数 物体の位置 向きを少しずつ変化させるといった アニメーションを実現するために利用できる サンプルプログラムでは 何も処理を行っていない ( 今後処理を追加 ) サンプルプログラムの構成 ( 確認 ) 描画処理の詳しい説明 main() 関数 initenvironment() 関数 ユーザ プログラム初期化処理 GLUT glutmainloop() 描画関数 (displa() 関数 ) の詳しい説明 変換行列の設定 ポリゴンの描画 displa() 関数 描画 mouse() 関数 motion() 関数 マウス処理 入力待ち処理 idle() 関数 アニメーション処理 main() 関数 終了処理 5

6 変換行列の設定 OpenGL は 内部に変換行列を持っている モデルビュー変換行列 射影変換行列 両者は別に扱った方が便利なので 別々に設定できるようになっている プログラムから OpenGLの関数を呼び出すことで 変換行列を変更できる 座標変換 ( 復習 ) モデル座標系からスクリーン座標系への変換 モデル座標系 スクリーン座標系 ワールド座標系 カメラ座標系 変換行列の設定 設定を行う変換行列の指定 glmatrimode() どの変換行列を変更するのかを指定する 変換行列の設定 glloadidentit() gltranslate() glrotate() その他の設定関数 変換行列の指定 glmatrimode( mode ) 設定する変換行列を指定する GL_MODELVIE モデルビュー変換 ( モデル座標系からカメラ座標系への変換 ) GL_PROJECTION 射影変換 ( カメラ座標系からスクリーン座標系への変換 ) glloadidentit() 変換行列の変更 単位行列で初期化 gltranslate(,, ) 平行移動変換をかける glrotate( angle,,, ) 指定した軸周りの回転変換をかける angle は 1 回転を 360 として指定 変換行列の変更 変換行列は順番に右側にかけられていく プログラムで後から記述した変換行列の方が 実際には先に計算される A = 1 1 A= A A A A n 6

7 サンプルプログラムの変換行列 サンプルプログラムのシーン設定 カメラと水平面の角度 ( 仰角 ) は camera_ptich カメラと中心の間の距離は 15 ポリゴンを (0,1,0) の位置に描画 サンプルプログラムの変換行列 モデル座標系 カメラ座標系への変換行列 cos( camera_pitch) sin( camera_pitch) = sin( camera_pitch) cos( camera_pitch) camera_pitch (0,1,0) ワールド座標系 カメラ座標系 モデル座標系 ワールド座標系 軸周りの回転 2つの平行移動変換の位置に注意 中心から15 離れるということは 回転後の座標系でカメラを後方 ( 軸 ) に15 下げることと同じ 変換行列の変更のプログラム マウス入力処理 (motion() 関数 ) // 右ボタンのドラッグ中であれば マウスの移動量に応じて視点を回転 if ( drag_mouse_r ) // マウスの縦移動に応じてX 軸を中心に回転 camera_pitch -= ( m - last_mouse_ ) * 1.0; if ( camera_pitch < ) camera_pitch = -90.0; else if ( camera_pitch > 0.0 ) camera_pitch = 0.0; // 今回のマウス座標を記録 last_mouse_ = m; last_mouse_ = m; // 再描画の指示を出す ( 描画のコールバック関数が呼ばれる ) glutpostredispla(); 変換行列の設定のプログラム 描画処理 (displa() 関数 ) // 変換行列を設定 ( ワールド座標系 カメラ座標系 ) glmatrimode( GL_MODELVIEW ); glloadidentit(); gltranslatef( 0.0, 0.0, ); glrotatef( - camera_pitch, 1.0, 0.0, 0.0 ); // 地面を描画 ( ワールド座標系で頂点位置を指定 ) // 変換行列を設定 ( モデル座標系 カメラ座標系 ) gltranslatef( 0.0, 1.0, 0.0 ); // ポリゴンを描画 ( モデル座標系で頂点位置を指定 ) その他の変換行列の設定方法 変換行列の設定関数 gllookat() カメラの位置と注視点の位置から変換行列を設定 glloadmatri(), glmustmatri() 配列を使って変換行列を設定 or かける 射影行列の設定関数 glperspective(), glfrustrum(), glorth() 1 つ目の関数はサンプルプログラムで使用 今回はこれらの関数の説明は省略 ポリゴンの描画 glbegin( tpe ) ~glend() を使用 glbegin( プリミティブの種類 ) この間にプリミティブを構成する頂点データを記述 glend() プリミティブの種類 GL_POINTS( 点 ) GL_LINES( 線分 ) GL_TRIANGLES( 三角面 ) GL_QUADS( 四角面 ) GL_POLYGON( ポリゴン ) 他 7

8 頂点データの指定 glcolor3f( r, g, b ) これ以降の頂点の色を設定 glnormal3f( n, n, n ) これ以降の頂点の法線を設定 glverte3f(,, ) 頂点座標を指定 色 法線は 最後に指定したものが使用される サンプルポリゴンの描画 (1) 地面のポリゴン ワールド座標系で頂点位置 法線を指定 真上 (0,1,0) を向き 水平方向の長さ 10 の四角形 // 地面を描画 glbegin( GL_POLYGON ); glnormal3f( 0.0, 1.0, 0.0 ); glcolor3f( 0.5, 0.8, 0.5 ); glverte3f( 5.0, 0.0, 5.0 ); glverte3f( 5.0, 0.0,-5.0 ); glverte3f(-5.0, 0.0,-5.0 ); glverte3f(-5.0, 0.0, 5.0 ); glend(); サンプルポリゴンの描画 (2) ポリゴン モデル座標系で頂点位置 法線を指定 glbegin( GL_TRIANGLES ); glcolor3f( 0.0, 0.0, 1.0 ); glnormal3f( 0.0, 0.0, 1.0 ); glverte3f(-1.0, 1.0, 0.0 ); glverte3f( 0.0,-1.0, 0.0 ); glverte3f( 1.0, 0.5, 0.0 ); glend(); (-1,1,0) (0,-1,0) (1,0.5,0) サンプルプログラムの座標系 cos( camera_pitch) sin( camera_pitch) = sin( camera_pitch) cos( camera_pitch) ワールド座標系 カメラ座標系 モデル座標系 ワールド座標系 15 (0,1,0) camera_pitch サンプルプログラムのまとめ サンプルプログラムの構成 ( 確認 ) サンプルプログラムの構成 メイン関数と各コールバック関数 初期化処理 各コールバック関数の役割 変換行列の設定 (displa() 関数 ) ポリゴンの描画 (displa() 関数 ) main() 関数 initenvironment() 関数 displa() 関数 mouse() 関数 motion() 関数 ユーザ プログラム初期化処理描画マウス処理 GLUT glutmainloop() 入力待ち処理 idle() 関数 アニメーション処理 main() 関数 終了処理 8

9 サンプルプログラムの拡張 サンプルプログラムの拡張 資料に従って サンプルプログラムを少しずつ拡張しながら OpenGLの使い方を学習 サンプルプログラムを修正するときは 自分でわざわざ打ち込まなくとも コピー & ペースを活用すると早い ただし 各修正にどのような意味があるのか きちんと理解しながら進めることが重要 理解しないままただコピーすると 間違えて違うところを修正してしまう可能性が高い プログラム拡張の流れ 簡単なアニメーションの追加 より複雑なポリゴンモデルの描画 変換行列を使った視点操作 変換行列を使ったアニメーション テクスチャマッピング 簡単なアニメーション ポリゴンの回転の変換行列 1 枚のポリゴンを 軸を中心として回転させる cos ( theta_ccle) 0 sin ( theta_ccle) cos( camera_pitch) sin( camera_pitch) sin( camera_pitch) cos( camera_pitch) = sin ( theta_ ccle) 1 cos( theta_ccle) ワールド座標系 カメラ座標系 モデル座標系 ワールド座標系 変換行列に 軸周りの回転を追加することで実現 (0,1,0) ポリゴンの回転のための変数 変数定義 ( 先頭 ) 変数の変化 (idle() 関数 ) // アニメーションのための変数 float theta_ccle = 0.0; void idle( void ) // theta_ccle を 0~360 まで繰り返し変化させる // (360 まで来たら 0 に戻る ) theta_ccle += 1.0; if ( theta_ccle > 360 ) theta_ccle -= 360; theta_ccle // 再描画の指示を出す ( 描画関数が呼ばれる ) glutpostredispla(); 9

10 ポリゴンの回転の追加 変換行列の設定 (displa() 関数 ) // 変換行列を設定 ( ワールド座標系 カメラ座標系 ) glmatrimode( GL_MODELVIEW ); glloadidentit(); gltranslatef( 0.0, 0.0, ); glrotatef( - camera_pitch, 1.0, 0.0, 0.0 ); // 地面を描画 ( ワールド座標系で頂点位置を指定 ) // 変換行列を設定 ( モデル座標系 カメラ座標系 ) gltranslatef( 0.0, 1.0, 0.0 ); glrotatef( theta_ccle, 0.0, 1.0, 0.0 ); // ポリゴンを描画 ( モデル座標系で頂点位置を指定 ) 裏面のポリゴンの描画 裏面が描画されない ( 背面消去のため ) ので 裏向きのポリゴンの描画を追加 glbegin( GL_TRIANGLES ); glcolor3f( 0.0, 0.0, 1.0 ); glnormal3f( 0.0, 0.0, 1.0 ); glverte3f(-1.0, 1.0, 0.0 ); glverte3f( 0.0,-1.0, 0.0 ); glverte3f( 1.0, 0.5, 0.0 ); glcolor3f( 1.0, 0.0, 0.0 ); glnormal3f( 0.0, 0.0,-1.0 ); glverte3f(-1.0, 1.0, 0.0 ); glverte3f( 1.0, 0.5, 0.0 ); glverte3f( 0.0,-1.0, 0.0 ); glend(); 頂点の順序 法線の向きが逆になる点に注目 修正箇所のまとめ 変数定義 ( 先頭 ) 変数の変化 (idle() 関数 ) 変換行列の設定 (displa() 関数 ) 裏向きのポリゴンの描画を追加 (displa() 関数 ) ポリゴンモデルの描画 より複雑なポリゴンモデルの描画 四角すいの描画 三角面の集合として描画 配列を使った四角すいの描画 ポリゴンデータを配列に格納 配列を使った直方体の描画 四角面の集合として描画 ポリゴンデータを配列に格納 四角すいの描画 四角すいを構成する頂点と三角面 V4 V3 三角面法線 V0, V3, V1 0.0, 0.53, 0.85 V0 (0.0, 0.8, 0.0) V0, V2, V4 0.0, 0.53, V2 V0, V1, V2 0.85, 0.53, 0.0 V0, V4, V3-0.85, 0.53, 0.0 V1, V3, V2 0.0, -1.0, 0.0 V1 (1.0, -0.8, 1.0) V4, V2, V3 0.0, -1.0,

11 面の法線の計算方法 ポリゴンの 2 辺の外積から計算できる N V1 N=(V3 - V1) ( V2 - V1) 長さが 1 になるよう正規化 V3 V2 ポリゴンモデルの描画方法 いくつかの描画方法がある プログラムからOpenGLに頂点データを与えるのにいろいろなやり方がある 主な描画方法 ( 今回は簡単な2 通りのみを扱う ) glverte() 関数に直接頂点座標を記述 頂点データの配列を使う方法 頂点配列を使う方法 頂点データとインデックスの配列を使う方法 頂点配列とインデックス配列を使う方法 OpenGL の頂点配列の機能を使うことで より高速に描画できる ( 今回は扱わない ) 方法 1 最も基本的な描画方法 サンプルプログラムと同様の描画方法 glverte() 関数の引数に直接頂点座標を記述 ポリゴン数 各ポリゴンの頂点数の数だけ glverte() 関数を呼び出す 四角すいの描画 (1) 四角すいを描画する新たな関数を追加 void renderpramid() glbegin( GL_TRIANGLES ); // +Z 方向の面 glnormal3f( 0.0, 0.53, 0.85 ); glverte3f( 0.0, 1.0, 0.0 ); glverte3f(-1.0,-0.8, 1.0 ); glverte3f( 1.0,-0.8, 1.0 ); glend(); 四角すいの描画 (2) 描画関数から四角すいの描画関数を呼び出し 修正の場所を間違えないように注意 renderpramid() 関数では色は使用されていないので 呼び出す前に色を設定している void displa( void ) // 中心に四角すいを描画 ((0,1,0) に移動 ) gltranslatef( 0.0, 1.0, 0.0 ); glcolor3f( 1.0, 0.0, 0.0 ); renderpramid(); この描画方法の問題点 問題点 同じ頂点が共通して使われている プログラムが長くなる モデルデータの修正がしにくい モデルデータがプログラムとして記述されているので ファイルから動的に読み込んだりするようなことができない 解決方法 モデルデータを配列に格納する 11

12 方法 2 配列を使った描画方法 頂点 ポリゴンのデータを配列に格納 描画関数では 配列のデータを順に参照しながら描画 必要な配列 ( サンプルプログラムの例 ) 頂点座標 (,,) 頂点数 三角面を構成する頂点番号 (v0,v1,v2) 三角面数 三角面の法線 (,,) 三角面数 三角面インデックス 頂点データの配列と 三角面インデックスの配列に分けて管理する 面 1 面 2 面 3 面 4 面 5 面 6 面 1 面 2 面 3 面 4 面 5 面 6 頂点データ ( 座標, 法線, 色など ) 頂点の重複がある 三角面インデックス 何番目の頂点データを使うかという情報 頂点の重複がなくなる 頂点データ ( 座標, 法線, 色など ) 配列を使った四角すいの描画 (1) 配列データの定義 const int num_pramid_vertices = 5; // 頂点数 const int num_pramid_triangles = 6; // 三角面数 // 角すいの頂点座標の配列 float pramid_vertices[ num_pramid_vertices ][ 3 ] = 0.0, 1.0, 0.0, 1.0,-0.8, 1.0, 1.0,-0.8,-1.0, ; // 三角面インデックス ( 各三角面を構成する頂点の頂点番号 ) の配列 int pramid_tri_inde[ num_pramid_triangles ][ 3 ] = 0,3,1, 0,2,4, 0,1,2, 0,4,3, 1,3,2, 4,2,3 ; // 三角面の法線ベクトルの配列 ( 三角面を構成する頂点座標から計算 ) float pramid_tri_normals[ num_pramid_triangles ][ 3 ] = 0.00, 0.53, 0.85, // +Z 方向の面 配列を使った四角すいの描画 (2) 配列データを参照しながら三角面を描画 void renderpramid() int i, j, v_no; glbegin( GL_TRIANGLES ); for ( i=0; i<num_pramid_triangles; i++ ) glnormal3f( pramid_tri_normals[i][0], [i][1], [i][2] ); for ( j=0; j<3; j++ ) v_no = pramid_tri_inde[ i ][ j ]; glverte3f( pramid_vertices[ v_no ][0], [ v_no ][1], glend(); 直方体の描画 別のポリゴンモデル ( 直方体 ) の描画 1 枚は空欄にしているので 各自 適切な頂点番号を考えて追加する (-0.4, 1.0, -0.2) V7 V3 V1 V5 V6 V2(0.4, 1.0, 0.2) V4 V0(0.4, 0.0, 0.2) 四角面法線 V2, V3, V1, V0 0.0, 0.0, 1.0 V7, V6, V4, V5 0.0, 0.0, -1.0 V2, V0, V4, V6 1.0, 0.0, 0.0 V3, V7, V5, V1-1.0, 0.0, 0.0 V3, V2,? V6, V7 0.0, 1.0, 0.0 V0, V1, V5, V4 0.0, -1.0, 0.0 配列を使った直方体の描画 (1) 配列データの定義 四角面を使うので 各面の頂点数が 4 個になる const int num_cube_vertices = 8; // 頂点数 const int num_cube_quads = 6; // 四角面数 // 頂点座標の配列 float cube_vertices[ num_cube_vertices ][ 3 ] = 0.4, 0.0, 0.2, // 0-0.4, 1.0,-0.2, // 7 ; // 四角面インデックス ( 各四角面を構成する頂点の頂点番号 ) の配列 int cube_inde[ num_cube_quads ][ 4 ] = 2,3,1,0, 7,6,4,5, 2,0,4,6, 3,7,5,1, 3,2,6,7, 0,1,5,4 ; 12

13 配列を使った直方体の描画 (2) 配列データの定義 ( 続き ) 今回は各面の色も指定する // 四角面の法線ベクトルの配列 ( 四角面を構成する頂点座標から計算 ) float cube_normals[ num_cube_quads ][ 3 ] = 0.00, 0.00, 1.00, 0.00, 0.00,-1.00, 0.00,-1.00, 0.00 ; // 四角面のカラーの配列 float cube_colors[ num_cube_quads ][ 3 ] = 0.00, 1.00, 0.00, 1.00, 0.00, 1.00, 1.00, 1.00, 0.00 ; 配列を使った直方体の描画 (3) 配列データを参照しながら四角面を描画 void rendercube() int i, j, v_no; glbegin( GL_QUADS ); for ( i=0; i<num_cube_quads; i++ ) glnormal3f( cube_normals[i][0], [i][1], [i][2] ); glcolor3f( cube_colors[i][0], [i][1], [i][2] ); for ( j=0; j<4; j++ ) v_no = cube_inde[ i ][ j ]; glverte3f( cube_vertices[v_no][0], [v_no][1], [v_no][2] ); glend(); 配列を使った直方体の描画 (4) 描画関数から直方体の描画関数を呼び出し 適切な位置 ( 移動の変換行列 ) を設定 色の指定は不要 void displa( void ) // 中心に直方体を描画 gltranslatef( 0.0, 0.0,? 0.0 ); glcolor3f( 1.0, 0.0, 0.0 ); rendercube(); 変換行列を使った視点操作 視点操作の拡張 左ドラッグで距離を操作できるように拡張 cos( camera_pitch) sin( camera_pitch) = camera_distance 0 sin( camera_pitch) cos( camera_pitch) ワールド座標系 カメラ座標系モデル座標系 ワールド座標系 camera_distance (0,1,0) camera_pitch 視点操作の拡張 プログラムの修正箇所 ( 多いので注意 ) 左ボタンの押下状態を記録する変数を追加 カメラと原点の距離を記録する変数を追加 mouse() 関数に 左ボタンの押下状態を更新する処理を追加 motion() 関数に 左ドラッグに応じて camera_distance を変更する処理を追加 一定値以上は近づかないように制限 displa() 関数を camera_distance に応じて変換行列を設定するように変更 13

14 変換行列によるアニメーション 変換行列によるアニメーション 変換行列を組み合わせることで さまざまな運動を実現できる idle() 関数 運動を表す媒介変数の変化を記述 dspla() 関数 媒介変数の値に応じて 回転角度や移動距離を設定 アニメーションに使用する変数 資料に従って いくつかの媒介変数を追加 theta_ccle 0~360 へ単調増加 360 になったら 0 に戻る theta_repeat 0~180 の間を往復 180 になったら減少を始める theta_ccle から計算できる move 0~1 の間を加速度つきで往復 1 に近づくと速度が減少 theta_ccle2, theta_repeat2 アニメーションの例 一定速度で回転運動 一定位置で回転運動 一定速度で回転運動 ( 常に正面を向く ) 一定速度で往復回転運動 一定速度で上下に往復移動運動 加速度つきで上下に往復移動運動 複数の物体の運動の組み合わせ 例 1: 一定速度で回転運動 移動 回転の順に適用 移動にも回転が適用されるので 半径 1.5 で回転 cos( theta_ccle) 0 sin ( theta_ccle) M = sin ( theta_ccle) 1 cos( theta_ccle) ワールド座標系 カメラ座標系 モデル座標系 ワールド座標系 例 2: 一定位置で回転運動 回転 移動の順に適用 ( 順序を逆 ) 常に同じ位置に移動するので その場で回転 cos( theta_ccle) 0 sin ( theta_ccle) M = sin ( theta_ccle) 1 cos( theta_ccle)

15 例 3: 一定速度で回転運動 2 常に正面を向くようにするためには? 最初に逆方向に回転しておくことで 次の回転をキャンセル ( 移動にのみ回転がかかる ) cos ( theta_ccle) 0 sin ( theta_ccle) cos( theta_ccle) 0 sin ( theta_ccle) M = sin ( theta_ccle) 1 cos ( theta_ccle) sin ( theta_ccle) 1 cos( theta_ccle) 例 4: 一定速度で往復回転運動 変換行列は例 1と同じ 異なる変数を使用 変数の変化 (idle() 関数 ) と変換行列の設定 (displa() 関数 ) の組み合わせが重要 cos ( theta_repeat ) 0 sin ( theta_repeat) M = sin ( theta_repeat) 1 cos( theta_repeat ) 例 5: 一定速度で上下に往復移動 回転だけではなく 位置に変数を使用することもできる めり込みを避けるために 座標値を +1 している theta_repeat / M = 例 6: 加速度つきで上下に往復運動 変数の変化を工夫することで 移動速度を変化させるようなこともできる ここでは三角関数の絶対値を利用 0~360 を 0~2π に変換している void idle( void ) // move を 0~1 の間で反復変化させる //( 三角関数を用いることで 一定速度でなはなく // 0 の近くで速度が小さく // 180 の近くで速度が大きくなるように変化させる ) move = fabs( sin( theta_ccle * / ) ); 例 7: 複数の物体の運動 それぞれ異なる変換行列を使用して描画 M = 1 1 cos( theta_ccle) 0 sin ( theta_ccle) = M sin ( theta_ccle) 1 cos( theta_ccle) cos( theta_ccle2) 0 sin ( theta_ccle2) = M sin ( theta_ccle2) 1 cos( theta_ccle2) 変換行列の退避 復元 現在の変換行列を記録しておき 後から復元することができる 記録した変換行列はスタックに記録される glpushmatri() 現在の変換行列の退避 スタックに積む glpopmatri() 最後に退避した変換行列の回復 スタックから取り出す 15

16 変換行列の退避 復元の例 ワールド座標系からカメラ座標系への変換行列を設定 地面を描画 行列を退避 物体 1からワールド座標系への変換行列 物体 1を描画 行列を回復 物体 2からワールド座標系への変換行列 物体 2を描画 World Camera World Camera Obj1 World World Camera World Obj2 Camera World 変換行列の退避 復元の例 プログラムの例 void displa( void ) // ここまででワールド座標系からカメラ座標系への変換設定 // 地面を描画 // 例 7:2 つの物体を描画 ( 異なる周期で往復回転運動 ) glpushmatri(); glrotatef( theta_ccle2, 0.0, 1.0, 0.0 ); gltranslatef( 0.0, 0.0, 3.0 ); rendercube(); glpopmatri(); glrotatef( theta_ccle, 0.0f, 1.0f, 0.0f ); gltranslatef( 0.0f, 0.0f, 1.5f ); rendercube(); テクスチャマッピング テクスチャマッピング 地面にテクスチャマッピングを適用して描画 各頂点に テクスチャ座標 (u,v) を指定 v (0.0, 1.0) (1.0, 1.0) u (0.0, 0.0) (1.0, 0.0) テクスチャマッピングのための修正 プログラムの修正箇所 テクスチャ画像を格納する変数を追加 テクスチャ画像の読み込み処理 テクスチャマッピングの設定処理 を追加 画像の読み込みには bitmap.cpp の関数を使用 地面にテクスチャマッピングを行う処理を追加 テクスチャマッピングの有効化 各頂点にテクスチャ座標を設定 コンパイル方法 (bitmap.cpp を一緒にコンパイル ) bcc32 -DWIN32 opengl.cpp bitmap.cpp レポート課題 課題 1 ポリゴンモデルの描画 課題 2 視点操作の拡張 課題 3 アニメーションの追加 作成したプログラムのソースファイルを提出 締め切り 12 月 16 日 ( 土 )17:00 基本的には今日中に終わらせて提出することを想定 レポート ( 文章 ) は提出しなくとも良い bitmap.cpp, bitmap.h やテクスチャ画像はつけなくて良い ファイル名を st??.cpp ( 自分のアカウント名 ) として提出 16

17 課題 1 ポリゴンモデルの描画 矢印 ( 初心者マーク ) の描画するプログラムを作成せよ V4 V10 V11 V5 V0 V1 V6 V7 V2 V3 V8 V9 課題 1 ポリゴンモデルの描画 矢印 ( 初心者マーク ) のポリゴンデータ 三角面 or 四角面の配列 描画関数を作成 頂点の順番は変えても良い V10 V8 V6 V4 V2 V0 V11 V9 V7 V5 V1 V3 頂点座標 V0 0.0, 0.8, 0.2 V1 0.0, 0.0, 0.2 V2 0.4, 1.0, 0.2 V3 0.4, 0.2, 0.2 V4-0.4, 1.0, 0.2 V5-0.4, 0.2, 0.2 V6 0.0, 0.8,-0.2 V7 0.0, 0.0,-0.2 V8-0.4, 1.0,-0.2 V9-0.4, 0.2,-0.2 V10 0.4, 1.0,-0.2 V11 0.4, 0.2,-0.2 課題 1 のヒント (1) 直方体と同様に頂点 四角面の配列を定義 const int num_leaf_vertices =? ; // 頂点数 const int num_leaf_quads =? ; // 四角面数 // 頂点座標の配列 float leaf_vertices[ num_leaf_vertices ][ 3 ] =? ; // 三角面インデックス ( 各三角面を構成する頂点の頂点番号 ) の配列 int cube_inde[ num_leaf_quads ][ 4 ] =? ; // 四角面の法線ベクトルの配列 ( 四角面を構成する頂点座標から計算 ) float cube_normals[ num_cube_quads ][ 3 ] =? ; // 四角面のカラーの配列 float cube_colors[ num_cube_quads ][ 3 ] =? ; 課題 1 のヒント (2) 描画関数も直方体と同じ ( 変数名を変更 ) void renderleaf() int i, j, v_no; glbegin( GL_QUADS ); for ( i=0; i<num_leaf_quads; i++ ) glnormal3f( cube_normals[i][0], [i][1], [i][2] ); glcolor3f( cube_colors[i][0], [i][1], [i][2] ); for ( j=0; j<4; j++ ) v_no = cube_inde[ i ][ j ]; glverte3f( cube_vertices[v_no][0], [v_no][1], [v_no][2] ); glend(); 課題 2 視点操作の拡張 左右に右ドラッグすると 視点が横に回転する ( 方位角が変化する ) 機能を追加せよ 変数を追加 (camera_aw) 変数の操作を追加 (motion() 関数 ) 変換行列の計算を追加 (displa() 関数 ) 課題 2 のヒント 先に変換行列を考えてからプログラム作成 cos( camera_pitch) sin( camera_pitch) camera_distance 0 sin ( camera_pitch) cos( camera_pitch) 0 W = ワールド座標系 カメラ座標系 軸周りの回転をどこかに追加 ( camera_aw) ( camera_aw) ( camera_aw) ( camera_aw) cos 0 sin sin 0 cos 追加する場所が違うと 正しく動作しないので注意! camera_pitch camera_aw モデル座標系 ワールド座標系 camera_distance 17

18 課題 3 アニメーションの追加 指定されたアニメーションを実現 物体 1~ 物体 6 の運動を実現 サンプルプログラムを参照 opengl_report.ee 変数にはサンプルプログラムと同じものを使って良い まずは各物体の変換行列を考えてから プログラムを作成すると良い 課題 3 アニメーションの追加 1. 中心で移動しないまま 一定速度で回転運動 2. 物体 1の周囲を一定速度で回転運動 物体 1と同じ方向を向いている 3. 物体 2の真上で上下に放物反復移動 常に正面を向いている 4. 物体 3の真上で左右に反復回転運動 物体 3と同じ方向を向いている 5. 物体 1の正面で前後に等速反復移動 常に正面を向いている 18

コンピューターグラフィックスS

コンピューターグラフィックスS 前回の演習の復習 今日の内容 コンピューターグラフィックス S 第 7 回演習 (2): ポリゴンモデルの描画 システム創成情報工学科尾下真樹 前回の復習 ポリゴンの描画方法 ( 復習 ) 基本オブジェクトの描画 ポリゴンモデルの描画 演習課題 サンプルプログラム 前回の演習の復習 opengl_sample.c 地面と 枚の青い三角形が表示される マウスの右ボタンドラッグで 視点を上下に回転 前回の演習課題.

More information

コンピューターグラフィックスS

コンピューターグラフィックスS 今日の内容 コンピューターグラフィックス S 第 8 回 () システム創成情報工学科尾下真樹 28 年度 Q2 前回の復習 演習 (2): ポリゴンモデルの描画 変換行列 の概要 座標系 視野変換 射影変換 のまとめ 教科書 ( 参考書 ) コンピュータグラフィックス CG-ATS 協会編集 出版 2 章 ビジュアル情報処理 -CG 画像処理入門 - CG-ATS 協会編集 出版 章 (-2~-3

More information

コンピュータグラフィックスS 演習資料

コンピュータグラフィックスS 演習資料 コンピュータグラフィックス S 演習資料 第 4 回シェーディング マッピング 九州工業大学情報工学部システム創成情報工学科講義担当 : 尾下真樹 1. 演習準備 今回の演習も 前回までの演習で作成したプログラムに続けて変更を行う まずは シェーディングの演習のため 描画処理で 回転する一つの四角すいを描画するように変更する 画面をクリア ( ピクセルデータと Z バッファの両方をクリア ) glclear(

More information

コンピュータグラフィックス特論Ⅱ

コンピュータグラフィックス特論Ⅱ 今日の内容 コンピュータグラフィックス特論 Ⅱ 第 2 回 OpenGL プログラミングの基礎 九州工業大学尾下真樹 OpenGL プログラミングの基礎 C 言語 +OpenGL+GLUT によるプログラミング 座標変換の基礎 アフィン変換行列を使った視野変換の設定 いずれも 学部の講義 ( レベルの内容 ) の復習 今日の内容 OpenGL&GLUTの概要 サンプルプログラムの概要 座標変換 変換行列の設定

More information

コンピュータグラフィックス特論Ⅱ

コンピュータグラフィックス特論Ⅱ コンピュータグラフィックス特論 Ⅱ 第 2 回 OpenGL プログラミングの基礎 九州工業大学尾下真樹 今日の内容 OpenGL プログラミングの基礎 C 言語 +OpenGL+GLUT によるプログラミング 座標変換の基礎 アフィン変換行列を使った視野変換の設定 いずれも 学部の講義 ( レベルの内容 ) の復習 今日の内容 OpenGL&GLUTの概要 サンプルプログラムの概要 座標変換 変換行列の設定

More information

コンピュータグラフィックスS 演習資料

コンピュータグラフィックスS 演習資料 2015/5/26 コンピュータグラフィックスS 演 習 資 料 第 2 回 ポリゴンモデルの 描 画 九 州 工 業 大 学 情 報 工 学 部 システム 創 成 情 報 工 学 科 講 義 担 当 : 尾 下 真 樹 1. 準 備 : 前 回 の 演 習 本 日 の 演 習 は 前 回 の 演 習 で 作 成 したプログラムを 引 き 続 き 修 正 していく もし 前 回 の 演 習 を 行

More information

スライド 1

スライド 1 グラフィックスの世界第 3 回 サイバーメディアセンター サイバーコミュニティ研究部門安福健祐 Processing によるアニメーション setup と draw void setup() size(400, 400); void draw() ellipse( mousex,mousey,100,100); void とか setup とか draw とかはじめて見る が出てきてややこしい ellipseは円描く関数でした

More information

演算増幅器

演算増幅器 コンピュータグラフィックス 2 前回は GLUT を使った簡単な 2 次元グラフィックスについて習った 今週は以下の項目について 補足していく イベント駆動型プログラムの動作について コンピュータグラフィックスの座標系 イベント駆動型プログラム従来のプログラムとの違いこれまでに学習してきたプログラムは上から下に順次実行され 条件分岐や繰り返し処理によって プログラムの流れ (flow: フロー )

More information

コンピュータグラフィックス基礎              No

コンピュータグラフィックス基礎               No 課題 6: モデリング (1) OBJView の動作確認 ( レポートには含めなくてよい ) 次ページ以降の 課題用メモ を参考にして OBJ ファイルを 3D 表示する OBJView を実行し 画面に立体が表示されることを確認するとともに 以下の機能を確認しなさい 左ドラッグによる立体の回転 右ドラッグによる拡大/ 縮小 [v] キーによる頂点の表示 非表示 サンプルに含まれる bunny_3k.obj

More information

コンピュータグラフィックス第8回

コンピュータグラフィックス第8回 コンピュータグラフィックス 第 8 回 レンダリング技法 1 ~ 基礎と概要, 隠面消去 ~ 理工学部 兼任講師藤堂英樹 レポート提出状況 課題 1 の選択が多い (STAND BY ME ドラえもん ) 体験演習型 ( 課題 3, 課題 4) の選択も多い 内訳 課題 1 課題 2 課題 3 課題 4 課題 5 2014/11/24 コンピュータグラフィックス 2 次回レポートの体験演習型 メタセコイア,

More information

(1) プログラムの開始場所はいつでも main( ) メソッドから始まる 順番に実行され add( a,b) が実行される これは メソッドを呼び出す ともいう (2)add( ) メソッドに実行が移る この際 add( ) メソッド呼び出し時の a と b の値がそれぞれ add( ) メソッド

(1) プログラムの開始場所はいつでも main( ) メソッドから始まる 順番に実行され add( a,b) が実行される これは メソッドを呼び出す ともいう (2)add( ) メソッドに実行が移る この際 add( ) メソッド呼び出し時の a と b の値がそれぞれ add( ) メソッド メソッド ( 教科書第 7 章 p.221~p.239) ここまでには文字列を表示する System.out.print() やキーボードから整数を入力する stdin.nextint() などを用いてプログラムを作成してきた これらはメソッドと呼ばれるプログラムを構成する部品である メソッドとは Java や C++ などのオブジェクト指向プログラミング言語で利用されている概念であり 他の言語での関数やサブルーチンに相当するが

More information

C#の基本

C#の基本 C# の基本 ~ 開発環境の使い方 ~ C# とは プログラミング言語のひとつであり C C++ Java 等に並ぶ代表的な言語の一つである 容易に GUI( グラフィックやボタンとの連携ができる ) プログラミングが可能である メモリ管理等の煩雑な操作が必要なく 比較的初心者向きの言語である C# の利点 C C++ に比べて メモリ管理が必要ない GUIが作りやすい Javaに比べて コードの制限が少ない

More information

Microsoft PowerPoint - info_eng3_05ppt.pptx

Microsoft PowerPoint - info_eng3_05ppt.pptx インタラクティブシステム構築法 第 5 回 OpenGL と GLUT の使い方 (3) 埼玉大学情報システム工学科小林貴訓 シェーディング 光源の設定を有効にする glenable(gl_lighting); // 光源の設定を有効にする glenable(gl_light0); //0 番目の光源を有効にする (8 個まで設定可能 ) 光源の位置 GLfloat light0pos[] = {

More information

C プログラミング演習 1( 再 ) 2 講義では C プログラミングの基本を学び 演習では やや実践的なプログラミングを通して学ぶ

C プログラミング演習 1( 再 ) 2 講義では C プログラミングの基本を学び 演習では やや実践的なプログラミングを通して学ぶ C プログラミング演習 1( 再 ) 2 講義では C プログラミングの基本を学び 演習では やや実践的なプログラミングを通して学ぶ 今回のプログラミングの課題 次のステップによって 徐々に難易度の高いプログラムを作成する ( 参照用の番号は よくわかる C 言語 のページ番号 ) 1. キーボード入力された整数 10 個の中から最大のものを答える 2. 整数を要素とする配列 (p.57-59) に初期値を与えておき

More information

コンピュータグラフィックス特論Ⅱ

コンピュータグラフィックス特論Ⅱ コンピュータグラフィックス特論 Ⅱ 第 1 回コンピュータグラフィックスの基礎 九州工業大学尾下真樹 2019 年度 本日の内容 ガイダンス コンピュータグラフィックスの概要と応用 3 次元グラフィックスの要素技術 3 次元グラフィックスのプログラミング 演習問題 授業担当 尾下真樹 ( おしたまさき ) 居室 : 研究棟 W623 e-mail: oshita@ces.kyutech.ac.jp

More information

演算増幅器

演算増幅器 スペースインベーダーもどき 1000 行プログラムの参考として スペースインベーダーもどきのプログラムを配布する いくつか習って いないものもあるので 補足の説明を加えていく 文字列の描画 文字の描画は glutbitmapcharacter() を用いる これは以下のようにして利用する int i; char *str = "Display String"; glcolor3f(0.0, 0.0,

More information

問 1 図 1 の図形を作るプログラムを作成せよ 但し ウィンドウの大きさは と し 座標の関係は図 2 に示すものとする 図 1 作成する図形 原点 (0,0) (280,0) (80,0) (180,0) (260,0) (380,0) (0,160) 図 2 座標関係 問 2

問 1 図 1 の図形を作るプログラムを作成せよ 但し ウィンドウの大きさは と し 座標の関係は図 2 に示すものとする 図 1 作成する図形 原点 (0,0) (280,0) (80,0) (180,0) (260,0) (380,0) (0,160) 図 2 座標関係 問 2 問 1 図 1 の図形を作るプログラムを作成せよ 但し ウィンドウの大きさは 400 200 と し 座標の関係は図 2 に示すものとする 図 1 作成する図形 原点 (0,0) (280,0) (80,0) (180,0) (260,0) (380,0) (0,160) 図 2 座標関係 問 2 for 文を用いて図 3 の様な図形を描くプログラムを作成せよ 但し ウィンドウのサイズは 300 300

More information

PowerPoint プレゼンテーション

PowerPoint プレゼンテーション プログラマー勉強会 1 回 basic.h 補足 [ 修飾子 ] const 付けた変数は初期化以外で値を設定することができなくなる 定数宣言に使う unsigned 付けた変数は符号がなくなり 正の値しか設定できない [ 条件コンパイル ] #ifdef M ここ以前に M がマクロとして定義されていれば ここ以下をコンパイルする #ifndef M ここ以前に M というマクロが定義されていなければ

More information

コンピュータグラフィックス演習 I 2012 年 5 月 21 日 ( 月 )5 限 担当 : 桐村喬 第 7 回モデリングの仕上げ 1 カメラワークとアニメーション 今日の内容 1. カメラワーク 2. シーンの設定 3. アニメーション 前回のテクスチャの紹介 1 / 10

コンピュータグラフィックス演習 I 2012 年 5 月 21 日 ( 月 )5 限 担当 : 桐村喬 第 7 回モデリングの仕上げ 1 カメラワークとアニメーション 今日の内容 1. カメラワーク 2. シーンの設定 3. アニメーション 前回のテクスチャの紹介 1 / 10 コンピュータグラフィックス演習 I 2012 年 5 月 21 日 ( 月 )5 限 担当 : 桐村喬 第 7 回モデリングの仕上げ 1 カメラワークとアニメーション 今日の内容 1. カメラワーク 2. シーンの設定 3. アニメーション 前回のテクスチャの紹介 1 / 10 モデリングの仕上げモデルをどう見せるか? 作成した 3DCG モデルは 最終的には 作品 として 2 次元の画像あるいは

More information

Microsoft Word - mediaJikkenCG_no2_2012.doc

Microsoft Word - mediaJikkenCG_no2_2012.doc 2012 年度メディア情報学実験 1 CG テキスト第 2~5 週 :OpenGL ライブラリを使った 3 次元 CG プログラミング立命館大学情報理工学部メディア情報学科 1. 実験の目的と手順本実験は,(1)OpenGLライブラリを用いたCGプログラミングの手法を学ぶ,(2) プログラミングを通して, CGの基礎技術を体験的に学ぶ,(3) インタラクティブな3 次元 CGアニメーションを作成する方法について学ぶ,

More information

医用工学概論  Medical Engineering (ME)   3年前期の医用工学概論実習と 合わせ、 医療の現場で使用されている 医用機器を正しく安全に使用するために必要な医用工学(ME)の 基礎知識を習得する。

医用工学概論  Medical Engineering (ME)   3年前期の医用工学概論実習と 合わせ、 医療の現場で使用されている 医用機器を正しく安全に使用するために必要な医用工学(ME)の 基礎知識を習得する。 http://chtgkato3.med.hokudai.ac.jp/kougi/me_practice/ EXCEL でリサージュ曲線のシミュレーションを行う Excel を開いて Aカラムのセル1 に (A1に) t と入力. (Aカラム( 列 ) に時間 ( 秒 ) を入れる ) ツールバーの中央揃えボタンを押すと 文字がセルの中央に配置される. Aカラムのセル2,3,4に (A2 A3 A4

More information

Microsoft PowerPoint - 04.pptx

Microsoft PowerPoint - 04.pptx 初期化 コールバック関数の登録 glutmainloop() 描画関数 マウス処理関数 キーボード処理関数などの関数ポインタを登録する イベント待ちの無限ループ 再描画? no マウス入力? no キーボード入力? no yes yes yes 描画関数の呼び出し マウス処理関数の呼び出し キーボード処理関数の呼び出し void keyboard(unsigned char key, int x,

More information

Microsoft Word - mediaJikkenCG_no2_2007.doc

Microsoft Word - mediaJikkenCG_no2_2007.doc 2007 年度メディア情報学実験 1 CG テキスト第 2~4 週 :OpenGL ライブラリを使った 3 次元 CG プログラミング立命館大学情報理工学部メディア情報学科 1. 実験の目的と手順本実験は,(1)OpenGLライブラリを用いたCGプログラミングの手法を学ぶ,(2) プログラミングを通して, CGの基礎技術を体験的に学ぶ,(3) インタラクティブな3 次元 CGアニメーションを作成する方法について学ぶ,

More information

謗域・ュ逕ィppt

謗域・ュ逕ィppt 情報工学 2017 年度後期第 5 回 [11 月 1 日 ] 静岡大学 工学研究科機械工学専攻ロボット 計測情報講座創造科学技術大学院情報科学専攻 三浦憲二郎 講義日程 第 6 回 11 月 8 日画像処理パート第 1 回 第 7 回 11 月 15 日 CGパート第 6 回 第 8 回 11 月 22 日 CGパート第 7 回 第 9 回 11 月 29 日 CGパート試験 講義アウトライン [11

More information

pp2018-pp9base

pp2018-pp9base プログラミング入門 Processing プログラミング第 9 回 九州産業大学理工学部情報科学科神屋郁子 ( pp@is.kyusan-u.ac.jp ) 時限 クラス 水 1 機械 ( クラス 3) 水 2 機械 ( クラス 1) 水 4 電気 (B1 B2) 後ろ 5 列は着席禁止 3 人掛けの中央は着席禁止 今後の予定 第 9 回 : 複数の図形 (2) 繰り返しと座標変換第 回 : 画像の表示と音の再生

More information

プログラミング実習I

プログラミング実習I プログラミング実習 I 05 関数 (1) 人間システム工学科井村誠孝 m.imura@kwansei.ac.jp 関数とは p.162 数学的には入力に対して出力が決まるもの C 言語では入出力が定まったひとまとまりの処理 入力や出力はあるときもないときもある main() も関数の一種 何かの仕事をこなしてくれる魔法のブラックボックス 例 : printf() 関数中で行われている処理の詳細を使う側は知らないが,

More information

メソッドのまとめ

メソッドのまとめ 配列 (2) 2 次元配列, String http://jv2005.cis.k.hosei.c.jp/ 授業の前に自己点検 配列変数に格納される配列の ID と配列の実体の区別ができていますか 配列変数の宣言と配列の実体の生成の区別ができていますか メソッドの引数に配列が渡されるとき 実際に渡されるものは何ですか このことの重要な帰結は何ですか 引数の値渡しと参照渡しということばを例を挙げて説明できますか

More information

Microsoft PowerPoint - kougi4.ppt

Microsoft PowerPoint - kougi4.ppt C の実行モデル 自由落下距離 前回の授業の 例題 1 の復習と重要事項 の確認 地上で物を落とし始めた後の自由落下距離を 求める 重力加速度 g は 9.8 とする 自由落下距離を求めるために, プログラム中に, 計算式 y = ( 9.8 / 2.0 ) * x * x を書く C++ ソースファイルの編集 編集画面 編集中のファイル名 関係するファイルなどが表示される ビルド結果などが表示される画面

More information

数はファイル内のどの関数からでも参照できるので便利ではありますが 変数の衝突が起こったり ファイル内のどこで値が書き換えられたかわかりづらくなったりなどの欠点があります 複数の関数で変数を共有する時は出来るだけ引数を使うようにし グローバル変数は プログラムの全体の状態を表すものなど最低限のものに留

数はファイル内のどの関数からでも参照できるので便利ではありますが 変数の衝突が起こったり ファイル内のどこで値が書き換えられたかわかりづらくなったりなどの欠点があります 複数の関数で変数を共有する時は出来るだけ引数を使うようにし グローバル変数は プログラムの全体の状態を表すものなど最低限のものに留 第 10 章分割コンパイル 1 ソースを分割する今まで出てきたソースは全て一つのソースファイルにソースを記述してきました しかし ソースが長くなっていくと全てを一つのファイルに書くと読みづらくなります そこで ソースを複数のファイルに分割してコンパイルを行う分割コンパイルをします 今章は章名にもなっている 分割コンパイルの方法についてやります 分割コンパイルする時は大抵 関連性のある機能ごとにファイルにまとめます

More information

Prog1_10th

Prog1_10th 2012 年 6 月 20 日 ( 木 ) 実施ポインタ変数と文字列前回は, ポインタ演算が用いられる典型的な例として, ポインタ変数が 1 次元配列を指す場合を挙げたが, 特に,char 型の配列に格納された文字列に対し, ポインタ変数に配列の 0 番の要素の先頭アドレスを代入して文字列を指すことで, 配列そのものを操作するよりも便利な利用法が存在する なお, 文字列リテラルは, その文字列が格納されている領域の先頭アドレスを表すので,

More information

スライド 1

スライド 1 Graphics with Processing 2007-11 シェーディングとテクスチャマッピング http://vilab.org 塩澤秀和 1 11.1 シェーディング シェーディング シェーディングとは Shading= 陰影づけ 光の反射 材質のモデル ( 前回 ) ポリゴンの陰影計算モデル = シェーディングモデル シェーディングモデル フラットシェーディング ポリゴンを単一色で描画

More information

コンピュータグラフィックス第6回

コンピュータグラフィックス第6回 コンピュータグラフィックス 第 6 回 モデリング技法 1 ~3 次元形状表現 ~ 理工学部 兼任講師藤堂英樹 本日の講義内容 モデリング技法 1 様々な形状モデル 曲線 曲面 2014/11/10 コンピュータグラフィックス 2 CG 制作の主なワークフロー 3DCG ソフトウェアの場合 モデリング カメラ シーン アニメーション テクスチャ 質感 ライティング 画像生成 2014/11/10 コンピュータグラフィックス

More information

4 正しい位置を持った 数値地図 25000( 空間データ基盤 ) の上に カラー空中写真 が読み込まれます この状態では カラー空中写真画像 は位置のデータを持っていないので 正しい位置に読み込まれていません ここから 画像位置合せ の作業を行います 地図画像は色調を変えることができます 薄くする

4 正しい位置を持った 数値地図 25000( 空間データ基盤 ) の上に カラー空中写真 が読み込まれます この状態では カラー空中写真画像 は位置のデータを持っていないので 正しい位置に読み込まれていません ここから 画像位置合せ の作業を行います 地図画像は色調を変えることができます 薄くする 手順 1-3 航空写真や地図画像の位置を合せる 本ソフトウェアでは 1/25000 ウォッちず ( 国土地理院 ) 1/25000 段彩 陰影画像 ( 日本地図センター ) や位置情報 ( ワールドファイル ) 付きの画像データは読み込むと同時に正しい位置に自動貼り付けされます しかし オリジナルの航空写真画像や紙地図をスキャナで読み込んだ画像 ( ラスタ ) データは位置情報を持っていないため 画像位置合せ

More information

CG

CG Grahics with Processig 7-6 座標変換と同次座標 htt://vilab.org 塩澤秀和 6-7 H. SHIOZAWA htt://vilab.org 6. * 座標系 座標系の変換 座標系 目盛りのつけかた 原点の位置 軸と 軸の方向 軸と 軸の目盛りの刻み 論理座標系 描画命令で使う目盛り ( 座標系 ) をつけかえることができる 論理座標系 描画命令で使う 座標 画面座標系

More information

コンピューターグラフィックスS

コンピューターグラフィックスS コンピューターグラフィックス S 第 12 回シェーディング マッピング システム創成情報工学科尾下真樹 2018 年度 Q2 今回の内容 前回の復習 シェーディング 光のモデル スムーズシェーディング シェーディング ( 続き ) OpenGL での光源情報の設定 ラジオシティ 影の表現 BRDF マッピング 今回の内容 シェーディング 光の効果の表現 マッピング 生成画像 表面の素材の表現 オブジェクト

More information

ToDo: 今回のタイトル

ToDo: 今回のタイトル グラフの描画 プログラミング演習 I L03 今週の目標 キャンバスを使って思ったような図 ( 指定された線 = グラフ ) を描いてみる 今週は発展問題が三つあります 2 グラフの準備 値の算出 3 値の表示 これまでは 文字列や値を表示するのには 主に JOptionPane.showMessageDialog() を使っていましたが ちょっとしたものを表示するのには System.out.println()

More information

Microsoft PowerPoint - Borland C++ Compilerの使用方法(v1.1).ppt [互換モード]

Microsoft PowerPoint - Borland C++ Compilerの使用方法(v1.1).ppt [互換モード] Borland C++ Compiler の 使用方法 解説書 (v1.1) 1 準備 (1/2) 1. スタートメニューから コントロールパネル を開いて その中に デスクトップのカスタマイズ フォルダーオプション があるので開く エクスプローラー内の ツール フォルダーオプション などからも開ける 2. 表示 タブにある 登録されている拡張子は表示しない のチェックを外して OKを押す これでファイルの拡張子が表示されるようになった

More information

コンピューターグラフィックスS

コンピューターグラフィックスS コンピューターグラフィックス S 第 2 回コンピュータグラフィックスの要素技術 システム創成情報工学科尾下真樹 2018 年度 Q2 今回の内容 前回の復習 コンピュータグラフィックスの歴史と応用 3 次元グラフィックスの要素技術 3 次元グラフィックス プログラミング 教科書 ( 参考書 ) コンピュータグラフィックス CG-ARTS 協会編集 出版 (3,200 円 ) 1~5 章の概要 ビジュアル情報処理

More information

スライド 1

スライド 1 Graphics with Processing 2008-12 モデリング http://vilab.org 塩澤秀和 1 12.1 3D モデリング モデリング 3Dモデルを作り上げること オブジェクト座標系で基本図形やポリゴンを組み合わせる テクスチャ x テクスチャ z y 2 12.2 オブジェクトの関数例 複雑なオブジェクトは, 大きさ 1 を目安としてモデリングし, 関数にしておくと利用しやすい

More information

Windows用タブレットドライバー簡易ガイド

Windows用タブレットドライバー簡易ガイド プリンストンテクノロジー製タブレット Windows 用ドライバー簡易ガイド ドライバー名 :Princeton Tablet Driver V4.16 対応機種 :PTB-ST12 シリーズ PTB-ST5 PTB-S1BK PTB-MT2 シリーズ対応 OS :Windows7 SP1(32bit/64bit) / WindowsVista SP2(32bit/64bit) / :WindowsXP

More information

沼津工業高等専門学校

沼津工業高等専門学校 VisualStudio2010 を用いた OpenGL(Glut) コンソール アプリケーションの作成方法 初版 : 2007.01.06 藤尾 改訂 : 2010.08.24 秋山 - 1 - - 目次 - Ⅰ. プログラミングの準備 3 Ⅰ.1 はじめに 3 Ⅰ.2 OpenGL の環境設定 3 Ⅱ. プログラミングの第 1 歩 ( 簡単なプログラムの作成 ) 3 Ⅱ.1 プロジェクトの作成と保存

More information

Microsoft Word - Training10_プリプロセッサ.docx

Microsoft Word - Training10_プリプロセッサ.docx Training 10 プリプロセッサ 株式会社イーシーエス出版事業推進委員会 1 Lesson1 マクロ置換 Point マクロ置換を理解しよう!! マクロ置換の機能により 文字列の置き換えをすることが出来ます プログラムの可読性と保守性 ( メンテナンス性 ) を高めることができるため よく用いられます マクロ置換で値を定義しておけば マクロの値を変更するだけで 同じマクロを使用したすべての箇所が変更ができるので便利です

More information

/*Source.cpp*/ #include<stdio.h> //printf はここでインクルードして初めて使えるようになる // ここで関数 average を定義 3 つの整数の平均値を返す double 型の関数です double average(int a,int b,int c){

/*Source.cpp*/ #include<stdio.h> //printf はここでインクルードして初めて使えるようになる // ここで関数 average を定義 3 つの整数の平均値を返す double 型の関数です double average(int a,int b,int c){ ソフトゼミ A 第 6 回 関数 プログラムは関数の組み合わせでできています 今までのゼミAでも printf や scanf など様々な関数を使ってきましたが なんと関数は自分で作ることもできるのです!! 今日は自作関数を中心に扱っていきます ゲーム制作でも自作関数は避けては通れないので頑張りましょう そもそもまず 関数とは 基本的には 受け取った値に関数によって定められた操作をして その結果の値を返す

More information

vecrot

vecrot 1. ベクトル ベクトル : 方向を持つ量 ベクトルには 1 方向 2 大きさ ( 長さ ) という 2 つの属性がある ベクトルの例 : 物体の移動速度 移動量電場 磁場の強さ風速力トルクなど 2. ベクトルの表現 2.1 矢印で表現される 矢印の長さ : ベクトルの大きさ 矢印の向き : ベクトルの方向 2.2 2 個の点を用いて表現する 始点 () と終点 () を結ぶ半直線の向き : ベクトルの方向

More information

ゲームエンジンの構成要素

ゲームエンジンの構成要素 cp-3. 計算 (C プログラムの書き方を, パソコン演習で学ぶシリーズ ) https://www.kkaneko.jp/cc/adp/index.html 金子邦彦 1 本日の内容 例題 1. 自由落下距離四則演算例題 2. 三角形の面積浮動小数の変数, 入力文, 出力文, 代入文例題 3. sin 関数による三角形の面積ライブラリ関数 2 今日の到達目標 プログラムを使って, 自分の思い通りの計算ができるようになる

More information

Microsoft PowerPoint Java基本技術PrintOut.ppt [互換モード]

Microsoft PowerPoint Java基本技術PrintOut.ppt [互換モード] 第 3 回 Java 基本技術講義 クラス構造と生成 33 クラスの概念 前回の基本文法でも少し出てきたが, オブジェクト指向プログラミングは という概念をうまく活用した手法である. C 言語で言う関数に似ている オブジェクト指向プログラミングはこれら状態と振る舞いを持つオブジェクトの概念をソフトウェア開発の中に適用し 様々な機能を実現する クラス= = いろんなプログラムで使いまわせる 34 クラスの概念

More information

Microsoft Word - povray.docx

Microsoft Word - povray.docx POV-Ray 1. 3 次元の CG の作成 3 次元の CG(Computer Graphics) を体験してみましょう. 図 1 は,3 次元の CG を生成するための一般的な手順を示したものです. このような手順にしたがって CG を生成することをレンダリングといいます.POV-Ray( ポブレイ ) はこれらの一連の処理を行うことができるソフトウェアです.CG の理論等については, 関連する専門科目で学んで下さい.

More information

pp2018-pp4base

pp2018-pp4base プログラミング入門 Processing プログラミング第 4 回 九州産業大学理工学部情報科学科神屋郁子 ( pp@is.kyusan-u.ac.jp ) 時限 クラス 水 1 機械 ( クラス 3) 水 2 機械 ( クラス 1) 水 4 電気 (B1 B2) 後ろ 5 列は着席禁止 3 人掛けの中央は着席禁止 第 4 回の内容 前回の質問への回答 マウスの操作と図形の描画 : メソッド 小テスト

More information

ARToolKit プログラムの仕組み 1: ヘッダファイルのインクルード 2: Main 関数 3: Main Loop 関数 4: マウス入力処理関数 5: キーボード入力処理関数 6: 終了処理関数 3: Main Loop 関数 1カメラ画像の取得 2カメラ画像の描画 3マーカの検出と認識

ARToolKit プログラムの仕組み 1: ヘッダファイルのインクルード 2: Main 関数 3: Main Loop 関数 4: マウス入力処理関数 5: キーボード入力処理関数 6: 終了処理関数 3: Main Loop 関数 1カメラ画像の取得 2カメラ画像の描画 3マーカの検出と認識 ARToolKit プログラムの仕組み 1: ヘッダファイルのインクルード 2: Main 関数 3: Main Loop 関数 4: マウス入力処理関数 5: キーボード入力処理関数 6: 終了処理関数 3: Main Loop 関数 1カメラ画像の取得 2カメラ画像の描画 3マーカの検出と認識 4 次の画像のキャプチャ指示 5マーカの信頼度の比較 6マーカの位置 姿勢の計算 7バッファの内容を画面に表示

More information

PowerPoint Presentation

PowerPoint Presentation プログラミング基礎 第 2 週 (4,5,6 回 ) 2011-10-07 出村公成 この資料の再配布を禁止します 予定 プログラミング入門 (45 分 ) 変数 入出力 分岐 演習 (90 分 ) タッチタイプ練習 統合開発環境 Codeblocksの使い方 教科書例題の打ち込みと実行 プログラミング入門 C 言語の簡単な例を体験 変数 入出力 分岐 プログラムの例リスト 2.1 改 #include

More information

Windows用タブレットドライバー簡易ガイド Ver.5.06版

Windows用タブレットドライバー簡易ガイド Ver.5.06版 プリンストン製タブレット Windows 用ドライバー簡易ガイド ドライバー名 :Princeton Tablet Driver V5.06 対応機種 :PTB-S3BK PTB-S2S PTB-STRP1 PTB-MT2 シリーズ対応 OS :Windows 8.1 (32bit/64bit) / Windows 8 (32bit/64bit) / :Windows 7 SP1(32bit/64bit)

More information

Microsoft Word - macマニュアル【 】.doc

Microsoft Word - macマニュアル【 】.doc 目次 1. ログイン... 1 2. ログアウト... 3 3. デスクトップ ( 例 :Word Excel 起動中 )... 4 4. Dock( 例 :Word Excel 起動中 )... 5 5. Finder ウィンドウ... 9 6. メニューバー ( 例 :Word 起動中 )... 10 7. 文字の入力 ( 例 :Word で入力 )... 11 8. データの保存 ( 例 :Word

More information

7 ポインタ (P.61) ポインタを使うと, メモリ上のデータを直接操作することができる. 例えばデータの変更 やコピーなどが簡単にできる. また処理が高速になる. 7.1 ポインタの概念 変数を次のように宣言すると, int num; メモリにその領域が確保される. 仮にその開始のアドレスを 1

7 ポインタ (P.61) ポインタを使うと, メモリ上のデータを直接操作することができる. 例えばデータの変更 やコピーなどが簡単にできる. また処理が高速になる. 7.1 ポインタの概念 変数を次のように宣言すると, int num; メモリにその領域が確保される. 仮にその開始のアドレスを 1 7 ポインタ (P.61) ポインタを使うと, メモリ上のデータを直接操作することができる. 例えばデータの変更 やコピーなどが簡単にできる. また処理が高速になる. 7.1 ポインタの概念 変数を次のように宣言すると, int num; メモリにその領域が確保される. 仮にその開始のアドレスを 10001 番地とすると, そこから int 型のサイズ, つまり 4 バイト分の領域が確保される.1

More information

第2章 Macintoshの基本操作

第2章 Macintoshの基本操作 第 2 章 Macintosh の基本操作 パソコンを操作するには パソコンに対して何らかの 命令 や 指示 をする必要があります 以下の章で説明するように パソコンの電源を入れると MacOS という基本ソフト (OS とも言う ) が起動しますので パソコンの操作は 基本的には Macintosh( 以下 Mac と言う ) 環境のもとでのパソコン操作となります Mac に対して 命令 や 指示

More information

JDK のインストール (2012 年 8 月時点でのバージョン ) Java の実行環境 開発環境は さまざまな企業 団体が開発 配布を行っているが 当テキストでは Java の生みの親である Sun MicroSystems 社 ( 現 Oracle 社 ) の実行環境 開発環境を使用する Ja

JDK のインストール (2012 年 8 月時点でのバージョン ) Java の実行環境 開発環境は さまざまな企業 団体が開発 配布を行っているが 当テキストでは Java の生みの親である Sun MicroSystems 社 ( 現 Oracle 社 ) の実行環境 開発環境を使用する Ja 開発環境 Windows 上で Java を学習するための開発環境を整えよう テキストエディタ Java Runtime Environment(JRE) Java SE Development Kit(JDK) ソースファイルを作成するのに必要 Java のプログラムを実行する実行環境 コンパイラ等を含んだ Java の開発環境 JDK は JRE を含む

More information

イントロダクション

イントロダクション プログラミング演習 IV 第 7 回マウス, キーボード, サウンド, 文字 埼玉大学情報システム工学科 小林貴訓 マウス入力 クリックイベントのコールバック関数の登録 glutmousefunc(mouse); クリックイベントのコールバック関数 // マウスクリックコールバック関数の指定 static int MouseLB_ON=0; // 左マウスボタン押下フラグ static int MouseRB_ON=0;

More information

Computer Graphics

Computer Graphics Graphics with Processing 2009-14 モデリング http://vilab.org 塩澤秀和 1 14.1 3D モデリング モデリング 3Dオブジェクト ( 物体 ) の形状を数値データの集合で表すこと オブジェクト座標系で基本図形やポリゴンを組み合わせる テクスチャ x テクスチャ z y 2 14.2 オブジェクトの関数化 複雑なオブジェクトは, 大きさ 1 を目安としてモデリングし,

More information

インテル(R) Visual Fortran コンパイラ 10.0

インテル(R) Visual Fortran コンパイラ 10.0 インテル (R) Visual Fortran コンパイラー 10.0 日本語版スペシャル エディション 入門ガイド 目次 概要インテル (R) Visual Fortran コンパイラーの設定はじめに検証用ソースファイル適切なインストールの確認コンパイラーの起動 ( コマンドライン ) コンパイル ( 最適化オプションなし ) 実行 / プログラムの検証コンパイル ( 最適化オプションあり ) 実行

More information

今回のプログラミングの課題 ( 前回の課題で取り上げた )data.txt の要素をソートして sorted.txt というファイルに書出す ソート (sort) とは : 数の場合 小さいものから大きなもの ( 昇順 ) もしくは 大きなものから小さなもの ( 降順 ) になるよう 並び替えること

今回のプログラミングの課題 ( 前回の課題で取り上げた )data.txt の要素をソートして sorted.txt というファイルに書出す ソート (sort) とは : 数の場合 小さいものから大きなもの ( 昇順 ) もしくは 大きなものから小さなもの ( 降順 ) になるよう 並び替えること C プログラミング演習 1( 再 ) 4 講義では C プログラミングの基本を学び 演習では やや実践的なプログラミングを通して学ぶ 今回のプログラミングの課題 ( 前回の課題で取り上げた )data.txt の要素をソートして sorted.txt というファイルに書出す ソート (sort) とは : 数の場合 小さいものから大きなもの ( 昇順 ) もしくは 大きなものから小さなもの ( 降順

More information

関数の定義域を制限する 関数のコマンドを入力バーに打つことにより 関数の定義域を制限することが出来ます Function[ < 関数 >, <x の開始値 >, <x の終了値 > ] 例えば f(x) = x 2 2x + 1 ( 1 < x < 4) のグラフを描くには Function[ x^

関数の定義域を制限する 関数のコマンドを入力バーに打つことにより 関数の定義域を制限することが出来ます Function[ < 関数 >, <x の開始値 >, <x の終了値 > ] 例えば f(x) = x 2 2x + 1 ( 1 < x < 4) のグラフを描くには Function[ x^ この節では GeoGebra を用いて関数のグラフを描画する基本事項を扱います 画面下部にある入力バーから式を入力し 後から書式設定により色や名前を整えることが出来ます グラフィックスビューによる作図は 後の章で扱います 1.1 グラフの挿入関数のグラフは 関数 y = f(x) を満たす (x, y) を座標とする全ての点を描くことです 入力バーを用いれば 関数を直接入力することが出来 その関数のグラフを作図することが出来ます

More information

プログラミング入門1

プログラミング入門1 プログラミング入門 1 第 5 回 繰り返し (while ループ ) 授業開始前に ログオン後 不要なファイルを削除し て待機してください Java 1 第 5 回 2 参考書について 参考書は自分にあったものをぜひ手元において自習してください 授業の WEB 教材は勉強の入り口へみなさんを案内するのが目的でつくられている これで十分という訳ではない 第 1 回に紹介した本以外にも良書がたくさんある

More information

Microsoft PowerPoint - kougi2.ppt

Microsoft PowerPoint - kougi2.ppt C プログラミング演習 第 2 回 Microsoft Visual Studio.NET を使ってみよう 説明 例題 1. プログラム実行の体験 コンピュータを役に立つ道具として実感する 次ページのプログラムを使って, Microsoft Visual Studio.NETでの C++ ソースファイル編集, ビルド, テスト実行の一連の過程を体験する 例題 1 のプログラムの機能 計算の繰り返し

More information

イントロダクション

イントロダクション プログラミング演習 IV 第 8 回 OpenCV とテクスチャマッピング物体の発光や透過 埼玉大学情報システム工学科 小林貴訓 OpenCV PC で画像処理を行うライブラリ インテル社の画像処理ライブラリが起源 2000 年頃に最初のバージョン CPU でも画像処理ができることを見せたかった? Open 化して, 現在は Willow Garage( ウィロー ガレージ ) が開発を行っている

More information

Word編2 宛先の氏名を入力する職人編宛名を入力するための画面が表示されます 姓と名の間にスペースを入れて氏名を入力します ボタンをクリックして敬称を選びます [ 連名 情報 ] タブをクリックします 必要に応じて [ 名前 ] 欄をクリックして連名を入力します 3 宛先の住所を入力する [ 自宅

Word編2 宛先の氏名を入力する職人編宛名を入力するための画面が表示されます 姓と名の間にスペースを入れて氏名を入力します ボタンをクリックして敬称を選びます [ 連名 情報 ] タブをクリックします 必要に応じて [ 名前 ] 欄をクリックして連名を入力します 3 宛先の住所を入力する [ 自宅 Word編筆王編筆ぐるめ編筆まめ編宛名職人40 かんたん年賀状素材集 2011 年版 for Windows 宛名面を作成 印刷しよう 筆まめ Ver.21/Ver.20 ( 以下 筆まめ ) を使って宛名面の印刷を行います 筆まめには 宛名面 を作成するための便利な住所録機能が用意されていますので 画面の指示に従って入力するだけで 郵便番号 住所 宛名などの情報が はがき宛名面の所定の位置にレイアウトされます

More information

0 21 カラー反射率 slope aspect 図 2.9: 復元結果例 2.4 画像生成技術としての計算フォトグラフィ 3 次元情報を復元することにより, 画像生成 ( レンダリング ) に応用することが可能である. 近年, コンピュータにより, カメラで直接得られない画像を生成する技術分野が生

0 21 カラー反射率 slope aspect 図 2.9: 復元結果例 2.4 画像生成技術としての計算フォトグラフィ 3 次元情報を復元することにより, 画像生成 ( レンダリング ) に応用することが可能である. 近年, コンピュータにより, カメラで直接得られない画像を生成する技術分野が生 0 21 カラー反射率 slope aspect 図 2.9: 復元結果例 2.4 画像生成技術としての計算フォトグラフィ 3 次元情報を復元することにより, 画像生成 ( レンダリング ) に応用することが可能である. 近年, コンピュータにより, カメラで直接得られない画像を生成する技術分野が生まれ, コンピューテーショナルフォトグラフィ ( 計算フォトグラフィ ) と呼ばれている.3 次元画像認識技術の計算フォトグラフィへの応用として,

More information

PowerPoint2003基礎編

PowerPoint2003基礎編 はじめに 1 PowerPoint の概要 2 1 PowerPoint とは 2 2 プレゼンテーションとは 2 3 PowerPoint でできること 3 4 プレゼンテーション作成の流れ 4 5 PowerPoint の起動 5 6 PowerPoint の画面 6 7 作業ウィンドウを閉じる 8 8 ツールバーを 2 行にしたい時は 9 第 1 章新しいプレゼンテーションを作ろう 1 レッスン

More information

Field Logic, Inc. 標準モード 3D モデル作成 配置編 Field Logic, Inc. 第 1 版

Field Logic, Inc. 標準モード 3D モデル作成 配置編 Field Logic, Inc. 第 1 版 Field Logic, Inc. 標準モード 3D モデル作成 配置編 Field Logic, Inc. 第 1 版 目次 1. 初めに... 1 本書の概要 ( 学習のポイント )... 1 2. Google SketchUp の起動... 2 3. 単純な形状をした工場の 3D モデルを作成... 3 3D モデルの作成... 3 工場の 3D モデルを STL 形式のファイルとして出力...

More information

Microsoft PowerPoint - CproNt02.ppt [互換モード]

Microsoft PowerPoint - CproNt02.ppt [互換モード] 第 2 章 C プログラムの書き方 CPro:02-01 概要 C プログラムの構成要素は関数 ( プログラム = 関数の集まり ) 関数は, ヘッダと本体からなる 使用する関数は, プログラムの先頭 ( 厳密には, 使用場所より前 ) で型宣言 ( プロトタイプ宣言 ) する 関数は仮引数を用いることができる ( なくてもよい ) 関数には戻り値がある ( なくてもよい void 型 ) コメント

More information

Wordの学習

Wordの学習 Windows10 の基本操作 第 1 章パソコンを学ぶこととは パソコンの動作概要 本体装置 平成 28 年 4 月 NPO 法人六樹会パソコンサロン 2 パソコンの構成 平成 28 年 4 月 NPO 法人六樹会パソコンサロン 3 パソコンの構成 平成 28 年 4 月 NPO 法人六樹会パソコンサロン 4 GUI とは テキスト =2 ページ GUI の要素 Window ( ウィンドウ )

More information

Fortran 勉強会 第 5 回 辻野智紀

Fortran 勉強会 第 5 回 辻野智紀 Fortran 勉強会 第 5 回 辻野智紀 今回のお品書き サブルーチンの分割コンパイル ライブラリ 静的ライブラリ 動的ライブラリ モジュール その前に 以下の URL から STPK ライブラリをインストールしておいて下さい. http://www.gfd-dennou.org/library/davis/stpk 前回参加された方はインストール済みのはず. サブルーチンの分割コンパイル サブルーチンの独立化

More information

目次 1. ログイン ログアウト デスクトップ ( 例 :Word Excel 起動中 ) Dock( 例 :Word Excel 起動中 ) Finder ウィンドウ メニューバー ( 例 :Word 起動中 )...

目次 1. ログイン ログアウト デスクトップ ( 例 :Word Excel 起動中 ) Dock( 例 :Word Excel 起動中 ) Finder ウィンドウ メニューバー ( 例 :Word 起動中 )... 2017 年 9 月 19 日 目次 1. ログイン... 1 2. ログアウト... 3 3. デスクトップ ( 例 :Word Excel 起動中 )... 4 4. Dock( 例 :Word Excel 起動中 )... 5 5. Finder ウィンドウ... 9 6. メニューバー ( 例 :Word 起動中 )... 10 7. 文字の入力 ( 例 :Word で入力 )... 11

More information

情報工学実験Ⅲ

情報工学実験Ⅲ 最終更新 :2016.10.27 IT 塾大学特別講座 テーマ :HTML による 3 次元グラフィックスの制作 福岡工業大学情報工学部情報工学科山澤一誠 (yamazawa@fit.ac.jp) 参考ページ ( 大学 3 年生の実験用ページ ) http://www.fit.ac.jp/~yamazawa/jikken3/ HTML による 3 次元グラフィックスの制作 1. 目的最新の Web3D

More information

Java Scriptプログラミング入門 3.6~ 茨城大学工学部情報工学科 08T4018Y 小幡智裕

Java Scriptプログラミング入門 3.6~ 茨城大学工学部情報工学科 08T4018Y  小幡智裕 Java Script プログラミング入門 3-6~3-7 茨城大学工学部情報工学科 08T4018Y 小幡智裕 3-6 組み込み関数 組み込み関数とは JavaScript の内部にあらかじめ用意されている関数のこと ユーザ定義の関数と同様に 関数名のみで呼び出すことができる 3-6-1 文字列を式として評価する関数 eval() 関数 引数 : string 式として評価する文字列 戻り値 :

More information

Microsoft PowerPoint - VBA解説1.ppt [互換モード]

Microsoft PowerPoint - VBA解説1.ppt [互換モード] 九州大学工学部地球環境工学科船舶海洋システム工学コース 計算工学演習第一 演習資料担当 : 木村 Excel 上のマクロを利用してプログラムを組む Visual Basic for Applications (VBA) のテクニック Excel のマクロとは? 一連の操作を自動的に行う機能 例 ) セル ( マス目 ) に数字を 1 から順番に埋めていく Excel のマクロでどんなプログラムが作れるのか?

More information

簡単な図面を書いてみよう 『 3D編 』

簡単な図面を書いてみよう 『 3D編 』 第 章 D 機能の基本操作 この章では TurboCAD v9 Professionalおよび TurboCAD v9 Standardに備えられている D 機能について説明します TurboSketch v9をお使いの場合は D 機能は使用することはできません - TurboCAD の D 機能の基本 Dオブジェクトを作成するツールは メニューの図形入力 Dオブジェクトもしくは [ 左面 ] ツールバーに備わっています

More information

PowerPoint プレゼンテーション

PowerPoint プレゼンテーション 講座準備 講座資料は次の URL から DL 可能 https://goo.gl/jnrfth 1 ポインタ講座 2017/01/06,09 fumi 2 はじめに ポインタはC 言語において理解が難しいとされる そのポインタを理解することを目的とする 講座は1 日で行うので 詳しいことは調べること 3 はじめに みなさん復習はしましたか? 4 & 演算子 & 演算子を使うと 変数のアドレスが得られる

More information

Prog2_9th

Prog2_9th 2017 年 11 月 30 日 ( 木 ) 実施 Canvas による描画 Canvas とは Canvas は, 描画コールを保持するためのクラスである 描画には, 次の 4 つの要素が必要である (1) ビットマップピクセル ( 画素 ) を保持 (2) キャンバス描画コール ( ビットマップへの書き出し要請 ) に対応 (3) 描画プリミティブ描画領域, パス, テキスト, ビットマップ等

More information

「MT-3_2-ja

「MT-3_2-ja MT-3_2-ja.zip の解凍 Movable type 3.2 の設置方法 入手した MT-3_2-ja.zip を解凍します 解凍ソフトは zip 形式の解凍に対応したソフトをご利用ください 設定ファイル mt-config.cgi の編集 設定ファイル mt-config.cgi の編集作業は お客様の独自ドメインのサーバ上で MovableType を動かすために必要な作業です mt-config.cgi

More information

Microsoft PowerPoint P演習 第10回 関数.ppt [互換モード]

Microsoft PowerPoint P演習 第10回 関数.ppt [互換モード] プログラミング演習 (10) 関数 中村, 橋本, 小松, 渡辺 1 目標 Processing で関数に挑戦! 機能をどんどん作ってみよう! 円とか四角形だけじゃなくて, 色々な図形描画を関数にしてしまおう! 判定も関数で! 関数 背景を塗りつぶす : background( 色 ); 円を描く : ellipse(x 座標, y 座標, 縦直径, 横直径 ); 線を描く : line( x1,

More information

Microsoft PowerPoint - 11.pptx

Microsoft PowerPoint - 11.pptx ポインタと配列 ポインタと配列 配列を関数に渡す 法 課題 : 配列によるスタックの実現 ポインタと配列 (1/2) a が配列であるとき, 変数の場合と同様に, &a[0] [] の値は配列要素 a[0] のアドレス. C 言語では, 配列は主記憶上の連続領域に割り当てられるようになっていて, 配列名 a はその配列に割り当てられた領域の先頭番地となる. したがって,&a[0] と a は同じ値.

More information

プレサリオ ステップアップ

プレサリオ ステップアップ 第 4 章プレサリオで音楽を楽しもう 音楽 CD を聴く / 保存する プレサリオに音楽 CD をセットするだけで 自動的に Windows Media Player が起動するので 手軽に音楽を楽しむことができます また Windows Media Player を使うと好きな曲だけを選んでハードディスクに保存しておくことができます 音楽を再生する 音楽の再生は Windows Media Player

More information

02: 変数と標準入出力

02: 変数と標準入出力 C プログラミング入門 基幹 7 ( 水 5) 13: 構造体 Linux にログインし 以下の講義ページを開いておくこと http://www-it.sci.waseda.ac.jp/ teachers/w483692/cpr1/ 2016-07-06 1 例題 : 多角形の面積 n = 5 (5 角形 ) の例 n 1 n 1 1 p 1 T 0 S = i=0 p 0 T i = i=0 2

More information

memo

memo 計数工学プログラミング演習 ( 第 3 回 ) 2017/04/25 DEPARTMENT OF MATHEMATICAL INFORMATICS 1 内容 ポインタの続き 引数の値渡しと参照渡し 構造体 2 ポインタで指されるメモリへのアクセス double **R; 型 R[i] と *(R+i) は同じ意味 意味 R double ** ポインタの配列 ( の先頭 ) へのポインタ R[i]

More information

書式に示すように表示したい文字列をダブルクォーテーション (") の間に書けば良い ダブルクォーテーションで囲まれた文字列は 文字列リテラル と呼ばれる プログラム中では以下のように用いる プログラム例 1 printf(" 情報処理基礎 "); printf("c 言語の練習 "); printf

書式に示すように表示したい文字列をダブルクォーテーション () の間に書けば良い ダブルクォーテーションで囲まれた文字列は 文字列リテラル と呼ばれる プログラム中では以下のように用いる プログラム例 1 printf( 情報処理基礎 ); printf(c 言語の練習 ); printf 情報処理基礎 C 言語についてプログラミング言語は 1950 年以前の機械語 アセンブリ言語 ( アセンブラ ) の開発を始めとして 現在までに非常に多くの言語が開発 発表された 情報処理基礎で習う C 言語は 1972 年にアメリカの AT&T ベル研究所でオペレーションシステムである UNIX を作成するために開発された C 言語は現在使われている多数のプログラミング言語に大きな影響を与えている

More information

ポインタ変数

ポインタ変数 プログラミング及び実習 5 馬青 1 文字処理 数値処理 : 整数 浮動小数点数 単一の文字は と ( シングルクォーテーション ) で囲んで表現される 文字のデータ型は char または int である int を用いたほうが ライブラリの関数の引数の型と一致する 以下は全部 int の使用に統一する 従って int ch; で文字変数を宣言しておくと ch= A ; のように ch に文字 A

More information

Microsoft Word - no11.docx

Microsoft Word - no11.docx 3. 関数 3.1 関数関数は数学の関数と同じようなイメージを持つと良いでしょう 例えば三角関数の様に一つの実数値 ( 角度 ) から値を求めますし 対数関数の様に二つの値から一つの値を出すものもあるでしょう これをイメージしてもらえば結構です つまり 何らかの値を渡し それをもとに何かの作業や計算を行い その結果を返すのが関数です C 言語の関数も基本は同じです 0 cos 1 cos(0) =

More information

PowerPoint Presentation

PowerPoint Presentation 工学部 6 7 8 9 10 組 ( 奇数学籍番号 ) 担当 : 長谷川英之 情報処理演習 第 7 回 2010 年 11 月 18 日 1 今回のテーマ 1: ポインタ 変数に値を代入 = 記憶プログラムの記憶領域として使用されるものがメモリ ( パソコンの仕様書における 512 MB RAM などの記述はこのメモリの量 ) RAM は多数のコンデンサの集合体 : 電荷がたまっている (1)/ いない

More information

02: 変数と標準入出力

02: 変数と標準入出力 C プログラミング入門 総機 1 ( 月 1) 13: 構造体 Linux にログインし 以下の講義ページを開いておくこと http://www-it.sci.waseda.ac.jp/ teachers/w483692/cpr1/ 2015-07-06 1 例題 : 多角形の面積 n = 5 (5 角形 ) の例 n 1 n 1 p 1 S = T i = 1 2 p i p i+1 i=0 i=0

More information

携帯電話を登録する 3 携帯電話で教員からのお知らせおよびレポート課題の情 報が得られます. 従来型携帯電話を利用するための情報登 録はパソコンを使って行います. スマートフォンユーザは スマートフォンユ ーザ向けガイド を参照してください. 携帯メールアドレスの登録 授業選択領域にて My Wor

携帯電話を登録する 3 携帯電話で教員からのお知らせおよびレポート課題の情 報が得られます. 従来型携帯電話を利用するための情報登 録はパソコンを使って行います. スマートフォンユーザは スマートフォンユ ーザ向けガイド を参照してください. 携帯メールアドレスの登録 授業選択領域にて My Wor 授業支援システムとは 授業支援システムは ICT を活用してより効果的な学習を行うためのシステムです. パソコン, 携帯, スマートフォンなどから利用することができます. この授業支援システムは法政大学もメンバになっている国際的な大学コミュニティで開発されている Sakai というシステムで,H etudee ( エチュード ) という愛称で呼ばれています. ログインする 授業支援システムを使うには

More information

Microsoft Word A02

Microsoft Word A02 1 / 10 ページ キャリアアップコンピューティング 第 2 講 [ 全 15 講 ] 2018 年度 2 / 10 ページ 第 2 講ビジネスドキュメントの基本 2-1 Word の起動 画面構成 Word を起動し 各部の名称と機能を確認してみましょう 2 1 3 6 4 5 名称 機能 1 タイトルバー アプリケーション名とファイル名が表示されます 2 クイックアクセスツールバー よく使うコマンドを登録できます

More information

Microsoft PowerPoint - [150421] CMP実習Ⅰ(2015) 橋本 CG編 第1回 幾何変換.pptx

Microsoft PowerPoint - [150421] CMP実習Ⅰ(2015) 橋本 CG編 第1回 幾何変換.pptx コンテンツ メディア プログラミング実習 Ⅰ コンピュータグラフィックス編 1 幾何変換 橋本直 今日大事なのは プログラムをじっくり読んで なぜそうなるか? を考えよう 命令によって起きていることを頭の中でイメージしよう 2 本題の前に確認 Processingでは画面の 左上隅 が原点 (0,0) x 軸の正の向きは 右 y 軸の正の向きは 下 x y : (0,0) 3 幾何変換の基本 4 幾何変換とは

More information

ex05_2012.pptx

ex05_2012.pptx 2012 年度計算機システム演習第 5 回 2012.05.25 高水準言語 (C 言語 ) アセンブリ言語 (MIPS) 機械語 (MIPS) コンパイラ アセンブラ 今日の内容 サブルーチンの実装 Outline } ジャンプ 分岐命令 } j, jr, jal } レジスタ衝突 回避 } caller-save } callee-save 分岐命令 ( 復習 ) } j label } Jump

More information

次の病院 薬局欄は 氏名 欄に入力された値によって入力すべき値が変わります 太郎の行く病院と花子の行く病院が必ずしも同じではないからです このような違いを 設定 シートで定義しておきましょう 太郎の行く病院のリストを 太郎 花子の行く病院のリストを 花子 として 2 つのリストが定義されています こ

次の病院 薬局欄は 氏名 欄に入力された値によって入力すべき値が変わります 太郎の行く病院と花子の行く病院が必ずしも同じではないからです このような違いを 設定 シートで定義しておきましょう 太郎の行く病院のリストを 太郎 花子の行く病院のリストを 花子 として 2 つのリストが定義されています こ 医療費の入力と集計 まえがき 医療費は一年間の合計を計算し 10 万円を超えていれば税務申告に際して医療費控除を受けることができます そこで 医療費を記入するたびに自動集計される仕組みを考えてみましょう ここで紹介する 医療費の入力と集計 は 税務申告で必要となる医療費のデータを作成するのに使うものです 特徴は ドロップダウンリストから簡便に入力ができ 入力と同時に自動集計されるようにしてあることです

More information

モデリングとは

モデリングとは コンピュータグラフィックス基礎 第 5 回曲線 曲面の表現 ベジェ曲線 金森由博 学習の目標 滑らかな曲線を扱う方法を学習する パラメトリック曲線について理解する 広く一般的に使われているベジェ曲線を理解する 制御点を入力することで ベジェ曲線を描画するアプリケーションの開発を行えるようになる C++ 言語の便利な機能を使えるようになる 要素数が可変な配列としての std::vector の活用 計算機による曲線の表現

More information

中綴じ3・4級.ren

中綴じ3・4級.ren 99 分野 用 語 解 説 クリック マウスの左ボタンを押す動作のこと ダブルクリック マウスの左ボタンを素早く2度続けてクリックする動作のこと ドラッグ マウスの左ボタンを押したまま マウスを動かすこと タッチタイピング キーボードを見ないでタイピングする技術のこと 右寄せ (右揃え) 入力した文字列などを行の右端でそろえること センタリング (中央揃え) 入力した文字列などを行の中央に位置付けること

More information

OpenGL & GLUTの基本関数の説明

OpenGL & GLUTの基本関数の説明 コンピュータグラフィックス S 演習資料 OpenGL & GLUT の基本関数の説明 1. OpenGL & GLUT 2. GLUT 2.1. GLUT void glutinit( int argc, char ** argv ); glut void glutinitdysplaymode( unsigned int mode ); mode void glutinitwindowsize(

More information

Prog1_12th

Prog1_12th 2013 年 7 月 4 日 ( 木 ) 実施 ファイル処理ファイルとはファイル (file) は日常用語では紙などを綴じたものを表すが, コンピュータ用語ではデータの集合体を指す言葉である ファイルは例えば, 文書ファイルやプログラムファイルのように, 用途によって分類されることもあれば, また, テキストファイルやバイナリファイルのように, ファイルの作り方によって分類されることもある なお,

More information

プログラミング入門1

プログラミング入門1 プログラミング入門 2 第 6 回継承 コンストラクタ 1 講義資料について 新しい言語の機能 ( オブジェクト指向の機構 ) については 随時参考書などを参照するのがよい 過去の資料も参考になる http://java2005.cis.k.hosei.ac.jp/ 今回の範囲は 上記ページの 17 回に詳しい 2 テーマ : 継承 コンストラクタ 継承 (inheritance) インスタンス変数の継承

More information

第32回_プレゼン資料_菅原(Unityはじめるよ~上半身だけ動かす2~)

第32回_プレゼン資料_菅原(Unityはじめるよ~上半身だけ動かす2~) Unity はじめるよ 上半 だけ動かす 2 統合開発環境を内蔵したゲームエンジン http://japan.unity3d.com/ いろんな職業の が る資料なので説明を簡単にしてある部分があります 正確には本来の意味と違いますが上記理由のためです ご了承ください この資料内の 部の画像 部の 章は Unity 公式サイトから引 しています 上半 だけ動かす 複雑なステートマシンを体の各部分ごとに管理することができます

More information

Microsoft Word - VisualBaseManual0.doc

Microsoft Word - VisualBaseManual0.doc VisualBase の使い方 このチュートリアルマニュアルは, 白山晋 : 知的可視化, 丸善,2006 で示した, いくつかの可視化操作を実際に体験できるプログラム VisualBase 1 の補足資料である 2. 市販のソフトウェアとの大きな違いは, (a) 扱うことのできるデータの種類が限られている (b) 誤操作時の対応が十分ではない (c) 原則として, 一切のサポートは行わないである.

More information