Microsoft PowerPoint - info_eng3_05ppt.pptx

Similar documents
イントロダクション

#include <stdio.h> 2 #include <stdlib.h> 3 #include <GL/glut.h> 4 Program 1 (OpenGL GameSample001) 5 // 6 static bool KeyUpON = false; // 7 sta

1 1. Program 1 OpenCV (OpenCV Sample001) 1 /* 2 - > - > - >VC++ 3 ( ) 4 C:\opencv\build\include 5 ( ) 6 C:\opencv\build\x86\vc10\lib 7 - > - > - > - >

Microsoft PowerPoint - 04.pptx

Fair Curve and Surface Design System Using Tangent Control

イントロダクション

3D グラフィックス処理の一般過程 1. 3D グラフィックス処理の一般過程

/*p7-1-1*/

スライド 1

第3章 OpenGL の基礎

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

libaux.dvi

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

OpenGL & GLUTの基本関数の説明

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

double rx[natom], ry[natom], rz[natom]; 原子の座標 速度 力 ポテンシャルエ double vx[natom], vy[natom], vz[natom]; ネルギーを受ける配列を準備 double fx[natom], fy[natom], fz[natom

謗域・ュ逕ィppt

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

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

Microsoft Word - mediaJikkenCG_no2_2007.doc

演算増幅器

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


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

Microsoft Word - mediaJikkenCG_no2_2012.doc

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

main

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

プログラミング演習 Ⅰ 第 14 回 2017/6/5( 月 ) ゲームを作る クイズ 担当 : 紅林林

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


<4D F736F F D20438CBE8CEA8D758DC F0939A82C282AB2E646F63>

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

情報システム設計論II ユーザインタフェース(1)

Microsoft PowerPoint - C言語の復習(配布用).ppt [互換モード]

memo

PowerPoint Presentation

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

PowerPoint プレゼンテーション

2 : 2008/12/ /01/ G :

C B

2/17 目次 I. はじめに... 3 II. 操作手順 (Controlの場合) 断面の作成 寸法測定 異なる断面間の寸法測定 繰り返し処理...11 III. 操作手順 (Verifyの場合) 断面の作成... 1

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

次の演習課題(1),(2)のプログラムを完成させよ

Microsoft Word - 415Illustrator

4 分岐処理と繰返し処理 ( 教科書 P.32) プログラムの基本的処理は三つある. (1) 順次処理 : 上から下に順番に処理する ぶんきそろ (2) 分岐処理 : 条件が揃えば, 処理する はんぷく (3) 反復処理 : 条件が揃うまで処理を繰り返す 全てのプログラムは (1) から (3) の

CG

Microsoft PowerPoint prog1_doc2x.pptx

Processingをはじめよう

演算増幅器

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

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

第 8 回の内容 クライアントサイド処理 JavaScript の基礎

Graphics with Processing モデリング 塩澤秀和 1

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

Visual Studio2008 C# で JAN13 バーコードイメージを作成 xbase 言語をご利用の現場でバーコードの出力が必要なことが多々あります xbase 言語製品によっては 標準でバーコード描画機能が付加されているものもあるようで す C# では バーコードフォントを利用したりバー

C#の基本

マウス操作だけで本格プログラミングを - 世界のナベアツをコンピュータで - プログラムというと普通は英語みたいな言葉で作ることになりますが 今回はマウスの操作だけで作ってみます Baltie, SGP System 操作説明ビデオなどは 高校 情

GIS利用クイックチュートリアル

第7章 レンダリング

第7章 レンダリング

スライド 1


memo

/* drawing function */ function_graph();// drawing graph glflush(); int main(int argc, char **argv ) glutinit( &argc, argv ); glutinitdisplaymode( GLU

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

プログラミング基礎

スライド 1

ホームページ・ビルダー16

ライティングの基本要素ライト ( 光源 ) の位置や種類 強さを決め モデルやシーンの見せ方を決めることをライティングとよぶ また モデルの表面での光の反射の度合いを調節することで ライティングの効果を変化させることができる 今回は ライティングの基本的な要素を解説し SketchUp のライティン

manual.dvi

Microsoft PowerPoint - 説柔5_間勊+C_guide5ï¼›2015ã•’2015æŒ°æŁŽæš’å¯¾å¿œç¢ºèª“æ¸‹ã†¿ã•‚.pptx

2. 次のスライドを作る 第 1 部コンピューターの仕組みを体験的に理解する [ 新しいスライド ] をクリックすると 2 枚目のスライドが提示される [ 新しいスライド ] をクリックすると [ タイトルとコンテンツ ] を表示するスライドが選ばれる [ 新しいスライド ] 右下の または [ レ

CG

Display 表示の初期化が CAVE 表示の初期化に置き換わり CAVE 用のプログラムに書き換えることが出来る 表 2 1 画面 (Windows LINUX IRIX) 用の OpenGL #include<stdio.h> #include<windows.h> #include<gl/g

Computer Graphics

Microsoft PowerPoint - 基礎IV演習1-8.pptx

簡単ラベル作成 印刷マニュアル

CodeGear Developer Camp

Microsoft PowerPoint prog1_doc2.pptx

NB

pp2018-pp4base

PowerPoint Presentation

Microsoft PowerPoint - 11.pptx

コンピュータ中級B ~Javaプログラミング~ 第3回 コンピュータと情報をやりとりするには?

Microsoft PowerPoint - [150428] CMP実習Ⅰ(2015) 橋本 CG編 第2回 ベジエ曲線とフラクタル.pptx

プログラミングA

JavaプログラミングⅠ

写真の閲覧方法 1. 閲覧する納品データの種類の選択 ( 写真 ) P3 写真の閲覧写真の閲覧写真の閲覧 2. 写真を一覧から選択 表示 3. 写真をサムネイル一覧から選択 表示 4. 写真をアルバム形式で表示 P5~ P7~ P9~ 5. 写真の便利な表示方法 拡大 / 縮小 回転 明るさ補正 6

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

情報システム設計論II ユーザインタフェース(1)

サンプル CSS web ページを開くと同時にピエロの玉乗りが動き出すアニメーションを作ってみましょう AnimeAuto の説明 HTML の記述 (AnimeAuto.html) ピエロの画像に pierrot という id を 玉の画像に ball という id を付けておきます <!DOCT

MMC Unity講座

第 2 回 Maya の基礎 2011 年度春学期火曜日 4 時限目 λ18 教室デザイン戦略 ( コンピュータアニメーション ) 担当 : 中村太戯留 Maya の基本操作 [ メインメニュー ] [ ステータスライン ] [ シェルフ ] [ ツールボックス ] [ チャンネルボックス ] [

<4D F736F F D2089A E838D815B838B B838082C582C D834F F08A7782D42E646F6378>

第3章 OpenGL の基礎

Java言語 第1回

PowerPoint プレゼンテーション

サービス付き高齢者向け住宅賠償責任保険.indd

プログラミングA

Transcription:

インタラクティブシステム構築法 第 5 回 OpenGL と GLUT の使い方 (3) 埼玉大学情報システム工学科小林貴訓

シェーディング 光源の設定を有効にする glenable(gl_lighting); // 光源の設定を有効にする glenable(gl_light0); //0 番目の光源を有効にする (8 個まで設定可能 ) 光源の位置 GLfloat light0pos[] = { 0.0, 5.0, 0.0, 1.0 ; gllightfv(gl_light0, GL_POSITION, light0pos); // 光源 0 を位置 (0.0, 5.0, 0.0) に設定 実際の 3 次元位置座標は同次座行系 (x, y, z, w) を用いて (x/w, y/w, z/w) で指定される. 普通は w=1.0 にしておき, 無限遠方にしたければ w=0.0 にする. また,glMatrixMode(GL_MODELVIEW); の後に書く.

シェーディング 光源の色 GLfloat light0ambi [] = { 0.2, 0.2, 0.2, 1.0 ; gllightfv(gl_light0, GL_AMBIENT, light0ambi); // 光源 0 の環境光の色を設定 GLfloat light0diff [] = { 0.8, 0.8, 0.8, 1.0 ; gllightfv(gl_light0, GL_DIFFUSE, light0diff); // 光源 0 の拡散光の色を設定 GLfloat light0spec [] = { 0.5, 0.5, 0.5, 1.0 ; gllightfv(gl_light0, GL_SPECULAR, light0spec); // 光源 0 の鏡面光の色を設定 鏡面光 拡散光 環境光 鏡面光拡散光環境光 材質 = 反射率

シェーディング 物体の材質の設定 GLfloat mat0ambi[] = { 0.2, 0.2, 0.2, 1.0 ; glmaterialfv(gl_front_and_back, GL_AMBIENT, mat0ambi); // 環境光の反射率を設定 GLfloat mat0diff[] = { 0.6, 0.2, 0.2, 1.0 ; glmaterialfv(gl_front_and_back, GL_DIFFUSE, mat0diff); // 拡散光の反射率を設定 GLfloat mat0spec[] = { 0.2, 0.2, 0.2, 1.0 ; glmaterialfv(gl_front_and_back, GL_SPECULAR, mat0spec); // 鏡面光の反射率を設定 環境光, 拡散光, 鏡面光のそれぞれに対して, それぞれの反射率を掛けたものを足しこんだものが実際に見える色になる GLfloat mat0shine[] = { 50.0 ; glmaterialfv(gl_front_and_back, GL_SHININESS, mat0shine); の指数を設定 (0-128で大きい方がピカッとした感じになる) // 鏡面光

シェーディング 法線ベクトルの設定 glenable(gl_normalize); // 法線ベクトルの自動正規化を有効 glnormal3f(0.0, 1.0, 0.0); // 法線方向の設定 glbegin(gl_quads); // 面の描画 glvertex3f( 1.0f, 0.0f, 1.0f); glvertex3f(-1.0f, 0.0f, 1.0f); glvertex3f(-1.0f, 0.0f,-1.0f); glvertex3f( 1.0f, 0.0f,-1.0f); glend(); 点や面には表と裏がある. 法線ベクトルで表裏が設定され, 光の反射も規定される. 材質設定の GL_FRONT_AND_BACK は表裏両面を描画する設定だった. glutsolidteapot などは既に設定済み 法線ベクトル

シェーディング シェーディングモードの設定 glshademodel(gl_smooth); // スムーズシェーディングに設定 様々な材質 真珠 GLfloat mat0ambi[] = {0.25, 0.20725, 0.20725, 1.0; GLfloat mat0diff[] = {1, 0.829, 0.829, 1.0; GLfloat mat0spec[] = {0.296648, 0.296648, 0.296648, 1.0; GLfloat mat0shine[] ={ 10.24; 真鍮 GLfloat mat0ambi[] = {0.329412, 0.223529, 0.027451, 1.0; GLfloat mat0diff[] = {0.780392, 0.568627, 0.113725, 1.0; GLfloat mat0spec[] = {0.992157, 0.941176, 0.807843, 1.0; GLfloat mat0shine[] ={ 27.89743616;

マウス入力 クリックイベントのコールバック関数の登録 glutmousefunc(mouse); // マウスクリックコールバック関数の指定 クリックイベントのコールバック関数 static int MouseLB_ON=0; // 左マウスボタン押下フラグ static int MouseRB_ON=0; // 右マウスボタン押下フラグ void mouse(int button, int state, int x, int y){ if (button == GLUT_LEFT_BUTTON && state == GLUT_DOWN){ MouseLB_ON = 1; printf("(%3d,%3d) で左ボタンが押されました n", x, y); else if (button == GLUT_LEFT_BUTTON && state == GLUT_UP){ MouseLB_ON = 0; printf("(%3d,%3d) で左ボタンを離しました n", x, y); else if (button == GLUT_RIGHT_BUTTON && state == GLUT_DOWN){ MouseRB_ON = 1; printf("(%3d,%3d) で右ボタンが押されました n", x, y); else if (button == GLUT_RIGHT_BUTTON && state == GLUT_UP){ MouseRB_ON = 0; printf("(%3d,%3d) で右ボタンを離しました n", x, y);

マウス入力 ドラッグイベントのコールバック関数の登録 glutmotionfunc(dragmotion); // マウスドラッグコールバック関数の指定 ドラッグイベントのコールバック関数 void dragmotion(int x, int y){ if (MouseLB_ON==1) printf( (%3d,%3d) で左ドラッグ中... n", x, y); else if (MouseRB_ON==1) printf( (%3d,%3d) で右ドラッグ中... n", x, y); マウス移動のコールバック関数の登録 glutpassivemotionfunc(passivemotion);// マウス移動コールバック関数の指定 マウス移動のコールバック関数 void passivemotion(int x, int y){ printf("(%3d,%3d) でマウス移動中... n", x, y);

キー入力 通常キーのコールバック関数 ( 押したとき ) の登録 glutkeyboardfunc(keyboard); // 通常キーコールバック関数の指定 ( 押したとき ) 通常キーのコールバック関数 ( 押したとき ) void keyboard(unsigned char key, int x, int y){ switch (key) { case '1': printf("(%3d,%3d) で 1 が押されました n", x, y); case '2': printf("(%3d,%3d) で 2 が押されました n", x, y); case '3': printf("(%3d,%3d) で 3 が押されました n", x, y);

キー入力 通常キーのコールバック関数 ( 離したとき ) の登録 glutkeyboardupfunc(keyboardup); // 通常キーコールバック関数の指定 ( 離したとき ) 通常キーのコールバック関数 ( 離したとき ) void keyboardup(unsigned char key, int x, int y){ switch (key) { case '1': printf("(%3d,%3d) で 1 が離されました n", x, y); case '2': printf("(%3d,%3d) で 2 が離されました n", x, y); case '3': printf("(%3d,%3d) で 3 が離されました n", x, y);

キー入力 特殊キーのコールバック関数 ( 押したとき ) の登録 glutspecialfunc(specialkey); // 特殊キーコールバック関数の指定 ( 押したとき ) 特殊キーのコールバック関数 ( 押したとき ) void specialkey(int key, int x, int y){ switch (key) { case GLUT_KEY_UP: printf("(%3d,%3d) で [ ] が押されました n", x, y); case GLUT_KEY_DOWN: printf("(%3d,%3d) で [ ] が押されました n", x, y); case GLUT_KEY_LEFT: printf("(%3d,%3d) で [ ] が押されました n", x, y); case GLUT_KEY_RIGHT: printf("(%3d,%3d) で [ ] が押されました n", x, y);

キー入力 特殊キーのコールバック関数 ( 離したとき ) の登録 glutspecialupfunc(specialkeyup); // 特殊キーコールバック関数の指定 ( 離したとき ) 特殊キーのコールバック関数 ( 離したとき ) void specialkeyup(int key, int x, int y){ switch (key) { case GLUT_KEY_UP: printf("(%3d,%3d) で [ ] が離されました n", x, y); case GLUT_KEY_DOWN: printf("(%3d,%3d) で [ ] が離されました n", x, y); case GLUT_KEY_LEFT: printf("(%3d,%3d) で [ ] が離されました n", x, y); case GLUT_KEY_RIGHT: printf("(%3d,%3d) で [ ] が離されました n", x, y);

キーリピート キーリピートを無効にするには以下を書く glutignorekeyrepeat(gl_true); // キーリピートを無効にする

演習 光源や材質の値を様々に変えて, 画像がどのように変化するかを確認しよう 素材の色を変える 照明の色を変える 法線ベクトルを変える 光源や物体を移動させてアニメーション マウスやキー入力でティーポットを様々に動かすプログラムを作ってみよう マウスの動きに合わせて物体を移動するプログラム 物体を移動させる代わりに視点を移動させるプログラム キーボードを用いて物体を並進 回転させるプログラム

来週 来週は自習です課題として以下のプログラムを作成してください オブジェクトを2つ作って, 片方をキーボードで操作して, もう片方に近づいたら色を変える 時間が余ったら, これまでの内容を使った CGアニメーションを作成してください例 : 太陽系シミュレータを高度化する 基本形状を組み合わせて, ロボットの上半身をつくる 手を振る, 頷くなどのアニメーションを作る基本形状を組み合わせて, 手を作る グーからパー, パーからチョキなどのアニメーションを作る