Large Display Size Middle Display Size Small Display Size

2016年4月 の日記

2016/4/28(木)

C言語の共用体と型キャストの違いについて探る、という文書を作りました。

私が最近、おもしろいなと思っているものなので掲載したいと思います。

C言語/共用体と型キャストの違い


2016/4/24(日)

fig.
▲原理を用いた3DCG 第1回

原理を用いた3DCGのプログラミングの解説 第1回です。全17回を予定しています。

左の画像をクリックすると文書へ移動します。



2016/4/20(水)

fig.
▲「画家のアルゴリズム」のしくみ

3DCGにおける陰面処理の1つ、「画家のアルゴリズム」の説明です。

1枚の図(画像)での説明になっています。

そんなに良い説明ではありませんが、せっかく作ったので掲載しておきます。

私の説明は、ときどき何を言っているのかわからない場合があって、私も読み手の皆さんも悩みどころになっていると思います。

図の左側は「現状のデータ」と題して「複数の3Dモデルを含められるデータの構造」を表していますが、このホームページでたびたび掲載していた3DCGのプログラムでは「複数の3Dモデル」には対応していないものがほとんどでした。その辺の違いだけ注意してください。

実際のプログラムはまた後日掲載します。



2016/4/12(火)

カラオケJOYSOUNDは歌った曲をパソコンで確認できる。

(会員になってIDとパスワードをしっかり覚えておく必要がある)

DAMは音質が良く、JOYは曲数が多いです。

会社の宴会で説得力を求められるような場ではDAMがおすすめです。

仲間内でアニメ曲などマイナーな曲を歌いたいときは、JOYがおすすめです。

今日はこれからまず混まないと思うので、途中でJOYからDAMの部屋へ変更できると思います。

じゃぁJOMで。…どっちですか~


取り消し線引いたRockdomは歌えなかったので取り消ししました。

Rockdomの曲を歌っている歌手の声の高さは次元を超えている。と思った。

2016/4/10(日)

下記の3DCGの言及部分で、3DCGプログラム(JavaScript)のサンプルへのリンクを付けました。ここの緑反転部分です。ページ内移動する

言及 よみ:げんきゅう

3DCGの言及の通りにプログラムしてあり、プログラムのコメントにそのままの文章をちりばめたので、内容を理解しやすいと思います。

3Dモデルの頂点に●を描くだけのプログラムなので、物足りないかもしれませんが、3DCGを描く方法は理解できるのではと思います。

陰面消去についてはここでは説明しませんが、「画家のアルゴリズム」(中学数学)、「法線ベクトル法」(高校数学)をそれぞれ使うと、簡易的なものが実現できます。それらはまた今度説明したいと思います。また、完璧な陰面消去としては「Zバッファ」を使う方法があり、これは単純なJavaScriptだけでは難しく、GPU(ハードウェア)の機能を使う必要があります(ブラウザではJavaScriptから一歩進んだwebGLというものを使えば実現できます。C言語などではopenGLやDirectXライブラリを使います)。

陰面消去を簡易的に行った例がこの前掲載した3Dダンジョンです→●(注:音楽が鳴ります)

そうだそうだ、大事なことを忘れていました。

このページで3DCG計算ができるようになったとしても、就職活動とかで「3DCG計算ができます」と言わないようにしてください。Shade3Dと同じ構図の画面が得られるのだとしても、3DCGを扱う業界が行っている計算方法と、ここで教えた計算方法は、原理の部分では共通していますが、計算内容は全く異なっているので、たぶん仕事では通用しないと思います。原理で遊んだら業界標準の計算(行列や視錐台など難しい計算)にトライしてみてください。弱音を吐くぐらい難しいです。

(それも、ひとつひとつの計算は弱音を吐くほど難しくはないと思います。行列は特別なルールを持った掛け算みたいなものだと思います(ここで使う行列は。)。難しいのは、

  • 行列を使った計算を何度か繰り返す中で、いま頂点がどのような状態なのか把握できるかどうか
  • 思った通りの描画にならないとき、原因を究明(計算内容のデバッグ)できるかどうか
  • 回転させたいとき計算のどの時点で回転計算を加えるのか

その辺が難しいです。何が難しくなくて、何が難しいか、あらかじめ知っていれば少しは楽かなと思います。

2016/4/7(木)

fig.
▲今月の挿絵

Excelの図形を組み合わせるだけで絵が簡単に描けるとか、そういう文書を公開していて、ほんとに簡単に描けるかな、とふと思って右の絵を描きました。

正直言うと…

すみません、難しい

なんか怒られちゃいそうなんですけど、描き始めで簡単じゃないと思いました。



描く手段はもしかしたら簡単かもしれません。「Excelのプリセット図形の配置」ですから。

右上の図もプリセット図形だけで、頂点の編集などは1回もやっていません。

結局のところ、図形を配置することと、紙の上で鉛筆を動かすことは、もしかしたら同じことなのかもしれません。

鉛筆の筆先のように細かいか、それともExcelの図形のようにおおざっぱなのか、という違いがあるだけで、やっていることはやはりお絵かきです。構図を検討したり、バランスをとったり、好感の持てる何かを探したり。

今回描いていてわかったのは、「好感の持てる何かを探す」というのが難しい、ということです。

みなさんもたぶん、何かを描こうとして始めるのは良いんだけど、自分が気に入る、人が気に入るだろう、そういう好感の持てるものになるかどうかが難しいと感じるのではないでしょうか。


私が今まで40年以上生きてきた中で、私が誰かに何かを教えて、その人の思い通りにそれができたという経験は何かあったかなと振り返ります。創作とか技術関係で。

3DCGの計算はもしかしたら、このページの私の説明をちらほらと読んで、実現した高校生~社会人の方がいるかもしれません。x, y, z の座標データで作成された3Dのデータを、h = x * ( s / z )、v = y * ( s / z ) の式(※sの値は50固定)を使って h, v を算出し、画面の横はh、縦はvの座標に小さな丸を描けば、とりあえず3Dの画像になり、h, v それぞれ17.6倍すれば、売り物のShade3Dと同じ構図の画面になる。ただそれだけだと、さかさまで、画面の左上を中心に描いてしまうので、h = h + 画面の半分、 v = -v + 画面の半分 とする必要がある。「視点 0, 0, 0」と「描こうとするもの」が接触しているとおかしな描画になるので、x, y, z の座標の時点で、z座標は視点から遠ざかるように、目からその物体までの距離として z = z + 300 とかしておく。また、そのままだと描こうとするものが小さすぎることがあるので、x, y, z それぞれ50倍とか倍率を掛けられるようにする。(x,y,zは先に50倍とか倍率を掛けて、後から距離として + 300など行う)

この説明の通りにしたサンプルはこれです。→ これをもとにしていろいろ遊んでほしいと思います。(陰面消去とかはありませんが)

3D計算は以上の通り、やることがはっきりとわかっているので教えやすいかもしれないです。

(ほかに教えたものがうまくいったという経験がないみたいです。カラオケの仕事を後輩に教えるのがうまくいったというのはあるんですけどね…)


お絵かきは計算ではなく、経験かもしれない。「好感の持てる何かを探す」というのを行うときに、経験を割とたくさん使った自分がいました。

「眉毛と眉毛の間は、この程度離したほうが良い」 その程度を経験で知っている。

「鉛筆は、長い長方形を傾けて緑にすればそれっぽく見える」 というのを以前行った。

「髪の毛が作れない。作れないなら後ろ髪をとりあえず作ると打開する」 以前それで進んだ。

「かわいいぬいぐるみがほしい」 前に猫を飼っていて四六時中よく見ていた。

「7,3分けはかわいい」 そういう女の子の髪型を見た。(これは誰でも何かしらあるはず)

「JUST LIKE AMERICA」 アルフィーの曲。(これも誰でも何かしらあるはず)

「髪の毛が少し内巻き」 内巻きにするのが自分のお決まりパターン。

(※ただし今回の内巻きは、図形(涙型)を選んでたまたまそうなってラッキーだっただけ)

←内巻き

「描いてるものに魅力がない」 目の虹彩部分(日本人なら茶色部分)にグラデを掛ければモチベーション(対象の魅力)が上がる。

「女性の肩幅は狭い。子供ならなおさら」 そういう体の大きさの割合を大まかに知っている。

「Excelの図形の操作のノウハウ」 正直言うとお店の仕事でポップ作りで図形をいじっていた。

「口の色、まつ毛部分の色が決まらない」 雑誌の編集者がほしがる色は?という見方で決めた。

(そういう見方も経験で身に付きます。みなさんも自分の仕事の細かい判断は、みなさんが自分の経験で身につけたでしょ)

…これらの手段がもし私に無かったら、もっと簡素な絵になったか、違う方法で絵を描いたと思います。

でも、経験がないならないなりに、「好感の持てる何かを探す」と思います。

ページ制作 homepage6047



ページの上端へ (もくじ開く)