コンピュータで色水あぞび
2016年9月 4日 (日) 投稿者: メディア技術コース
みなさん、こんにちは、
リオのオリンピックの閉会式を見た人も多いと思います。色彩豊かで美しかったですね。メディア学部では、アニメを作るにも、ゲームを作るにも、映像制作にも、そして、広告やデザインにも色の作成は重要です。みなさんは、コンピュータで、好みの色を作れますか?今日は一緒に、「コンピュータ色水あそび」をしてみましょう。
コンピュータの中では、色は赤(R)、緑(G)、青(B)の光の3原色で表されます。それぞれの強さを0から1の間の数値で表し、RGBの値の組で1つの色が決まります。例えば、黒は[0,0,0]、白は[1,1,1]なのです。赤は[1,0,0]で表され、暗い赤は[0.5,0,0]などで表現できます。つまり、この組み合わせを自由に作れるようにすれば、どんな色でも作れるわけです!
ここでは、Scilabというツールを使います。Scilabホームページ からダウンロードでき、営利目的でなければ、無料で利用できます。
操作パネルはfigureで作ります。
文字記入欄、スライダー、数値表示窓はいずれもuicontrolという命令で作れます。
スライダーとは、つまみをつまんで動かしてレベル調整をするものです。
figureやuicontrolの中では、いろいろな属性値を設定できます。
'string','R' というのは文字をRに設定しなさい、ということを表します。
場所をしていするのは'position'で、画面の左したからの画素数で枠の場所や大きさを指定できます。
'callback'というのは、スライダーや文字記入枠に書き込みがあった場合に、行われる演算や色の変更を表します。
説明はこのくらいにして、プログラムを作ってみましょう。
Scilabのコンソールから以下を順次打ち込むか、「アプリケーション」メニューのところから呼び出せるエディタSciNotesを起動、プログラムを作成し名前を付けて保存、SciNotesの画面の「実行する」メニューから出力ありで実行してみてください。
//操作画面設定
h = figure( 'position' , [ 100 100 300 100 ] ) ;
set( h , 'figure_name' , 'RGBカラー' ) ;
//色表示窓
hcol = uicontrol( 'style' , 'edit' , 'position' , [ 200 10 80 80 ] ) ;
set( hcol , 'backgroundcolor' , [0,0,0] );
setc = [ ...
'r = get( hsr , ''value'' ) ; g = get( hsg , ''value'' ) ;' ...
'b = get( hsb , ''value'') ; set( hcol , ''backgroundcolor'' ,[ r g b ] );' ...
] ;
//R設定
htr = uicontrol( 'style' , 'text' , 'pos' , [ 10 70 20 20 ] , ...
'string' , 'R' ) ;
sr = ' set( hsr , ''value'' , strtod( get( her , ''string'' ) ) ) ; ' ;
her = uicontrol( 'style' , 'edit' , 'position' , [ 150 70 40 20 ] , ...
'call' , 'execstr(sr);execstr(setc);' ) ;
cr = ' set( her , ''string'' , string( hsr.value ) ) ; '
hsr = uicontrol( 'style' , 'slider' , 'pos' , [ 40 70 100 20 ] , ...
'min' , 0 , 'max' , 1 , 'call' , 'execstr(cr) ; execstr( setc ) ;' ) ;
//G設定
htg = uicontrol( 'style' , 'text' , 'pos' , [ 10 40 20 20 ] , ...
'string' , 'G' ) ;
sg = ' set( hsg , ''value'' , strtod( get( heg , ''string'' ) ) ) ; ' ;
heg = uicontrol( 'style' , 'edit' , 'position' , [ 150 40 40 20 ] , ...
'call' , 'execstr(sg);execstr(setc);' ) ;
cg = ' set( heg , ''string'' , string( hsg.value ) ) ; '
hsg = uicontrol( 'style' , 'slider' , 'pos' , [ 40 40 100 20] , ...
'min' , 0 , 'max' , 1 , 'call' , 'execstr(cg) ; execstr( setc ) ;' ) ;
//B設定
htb = uicontrol( 'style' , 'text' , 'pos' , [ 10 10 20 20 ] , ...
'string' , 'B' ) ;
sb = ' set( hsb , ''value'' , strtod( get( heb , ''string'' ) ) ) ; ' ;
heb = uicontrol( 'style' , 'edit' , 'position' , [ 150 10 40 20 ] , ...
'call' , 'execstr(sb);execstr(setc);' ) ;
cb = ' set( heb , ''string'' , string( hsb.value ) ) ; '
hsb = uicontrol( 'style' , 'slider' , 'pos' , [ 40 10 100 20 ] , ...
'min', 0 , 'max' , 1 , 'call' , 'execstr(cb) ; execstr( setc ) ;' ) ;
「在学生向け」カテゴリの記事
- チュラロンコン大学からのインターン学生との再会(2019.03.14)
- あにめたまご2019「文化庁若手アニメータ等人材育成事業」(2019.03.12)
- タイの提携校、キンモンクット大学トンブリに短期訪問しませんか?(2019.03.11)
- 学会紹介:ADADA Japan学術大会と情報処理学会EC2019(2019.03.09)
- 大学院授業:プロシージャルアニメーション特論の紹介(2019.03.08)
「研究紹介」カテゴリの記事
- 映像表現・芸術科学フォーラムにて卒研生が優秀発表賞を受賞(2019.03.17)
- 自由な言葉でライブパフォーマンスをアレンジする(2019.03.16)
- 先端メディア学II(2年生)の学生が人工知能学会の研究会で発表(2019.03.15)
- 映像表現・芸術科学フォーラムでの発表(2019.03.10)
- ゲームの学会?!(2019.03.07)
「高校生向け」カテゴリの記事
- チュラロンコン大学からのインターン学生との再会(2019.03.14)
- 大学院授業:プロシージャルアニメーション特論の紹介(2019.03.08)
- ゲームの学会?!(2019.03.07)
- 香港理工大学デザイン学部の紹介(2019.03.04)
- 香港理工大学デザイン学部を訪問し、学部長Lee先生にお会いしました!(2019.03.03)