ゲームエフェクトデザイナーのブログ | A Real-Time VFX Artist's Blog

About Making Materials on UE, Making Tools with C#, etc

「eboard」で中学の数学をやり直してみる

3DCGツールでスクリプトに手を出したり、シェーダーなどに触れたりすると、数学が必要な場面があって、高校時代に全くと言って良いほど勉強しなかった自分は「高校数学を学び直さないと‥」「いや、高校数学どころか中学からやり直さねば多分わからん‥」と思うことがよくあります。

そう思いつつもほったらかしになっていたのですが、最近こんなツイートが流れてきました。

ほうほう、これはいいなーと思ってRTしたのですが、ついでに「中学の数学を学びなおすのに良いサービスはないかな?」と思ってググってみたらトップに出てきたのがこちら。

eboard」は主に中学生で学ぶ内容を動画で分かりやすく丁寧に教えてくれるサービスのようですが、ユーザー登録しなくても視聴可能で、ユーザー登録すればテスト問題を解いたりどこまで進めたかグラフィカルに表示されたりします。

高校生で学ぶ内容では「高校数学I」だけありますね。

こちらを試しに中学数学の頭から1年生の終わりまで視聴してみましたが、テストをすっ飛ばして動画を見るだけなら半日~1日あれば十分観終える感じでした。
1つの動画は数分程度で、短いものだと2~3分だったりもします。

ということは3日間くらい集中して観れば、中学数学の復習ができるなあ!と。

思ったより短時間で高校数学まで辿りつきそうでモチベーションが上がってきました。
非常に素敵なサービスだと思います。

寄付のページをざっと見てみてもちゃんとしているなあと思いましたし、大きな企業からの協賛もあって素晴らしいなと。寄付は定額だけでなく単発でもいけるようなので、高校数学Iを終えたら感謝の分の寄付をしたいなと思いました。

しかし数学を学習してみて思うのは、1つずつステップアップしていくカリキュラムの流れが美しいなあと。今覚えたものが次に役立つ、の繰り返しで。
国内独自の工夫が盛り込まれているのか、海外と同じなのか。海外がどういったカリキュラムなのかは知りませんが、沢山の頭の良い人達によって長年の間に洗練されてきているのでしょうか。
「はじき」とか「ひとよひとよに‥」が昔と全く変わっていなくてそこはほほえましく思いつつも、こういったカリキュラムを考えられるというのはすごいなと思うのでした。
ハードウェアやソフトウェア、3Dグラフィックスパイプラインやリアルタイムグラフィックス、ゲームエフェクト、果ては開発とかマネジメントとかも順を追って基礎から学べる動画があると良いなあとぼんやり考えたり。

しかし反面、数学は他の教科と比べて、何のために役立つのかイメージしにくくて子供たちにはモチベーションになりにくいだろうなあという点と、他の教科に比べて学習が階段的であるというか‥1つ躓くと以降のステップがどんどん分からなくなっていって脱落しやすい科目だなあというのをあらためて感じました。
先生も教えたりついていけない子をフォローしていくのも大変だろうなと。。

数学だと特にグラフとか図形では3DCGアニメーションを使ってグラフィカルに提示したら理解のしやすさが格段に上がるだろうし、またゲームのプログラミングでは数学が活用される場面が多いと思うので活用例とシリアスゲームがうまくミックスされたようなコンテンツがあれば良さそうと思いましたがすでにあるのかな?

ちなみに、実のところ中学の数学についてはYouTubeで解説動画が色々と上がっていて、ちょこっと視聴したことはあるのですが、YouTubeの動画リストからでは一覧性が悪くアクセスし辛い印象なので、こういった学習に特化したサイトで視聴できる方がやっぱりいいですね。

Udemyも探せば高校数学とかCGクリエーター向けの数学の講座もあるのでしょうか。
Online Courses - Anytime, Anywhere | Udemy

またこちらも漁ってみたいと思います。

 

追記:
後日、無事に中学数学の視聴を一通り終えました。
先に書いたように3日間集中して視聴すれば一通り観終える感じでした。
早く高校数学に入っていきたかったのですが、そういう場合にどこか飛ばせる要素は無いか振り返ってみたものの、無いですね。。
因数分解も覚える必要あるんだろうかと思いましたが、高校の数学Iでまた出てきますし‥

と言う訳で、引き続き高校数学を学んでいきたいと思います。
3DCG周りで必要なのは「三角関数」「ベクトル」「行列」あたりになるようです。

メモ:

 

ゲーム開発者による情報発信や副業について考えてみる

今日は2017年の大晦日ですね。

今年は色々と感慨深い年でもあったので、私にとって永遠のテーマでもある「ゲーム開発者にとってのプライベートでの情報発信や副業」について、さらっとではありますが今の考えを書いてみます。

続きを読む

C# DataGridViewの主なプロパティと関数

良く忘れるのでメモ。

デフォルトから変えることが多いものを中心にメモっています。

DataGridViewの主なプロパティ


◆動作

AllowUserToAddRows  False ‥にするとユーザーが行を追加できなくなる

AllowUserToDeleteRows  False ‥にするとユーザーが行を削除できなくなる

ReadOnly  True ‥にするとユーザーがセルを編集できなくなる

◆配置

AutoSizeColumnsMode  Fill ‥にすると列が枠にピタっと収まる

◆表示

RowHeaderVisible False ‥にすると行ヘッダーを非表示にする
ColumnHeadersDefaultCellStyle>AlignmentをMiddleCenter ‥にすると行ヘッダーを中央揃えにできる

DataGridViewでよく利用する関数


//全ての行の内容をクリア
dataGridView1.Rows.Clear();
//全ての列の内容をクリア
dataGridView1.Columns.Clear();
//行数をカウント
dataGridView1.Rows.Count;
//指定セルの背景色を変更
dataGridView1.Rows[0].Cells[0].Style.BackColor = Color.FromArgb(0, 0, 0);
//選択している行を削除
dataGridView1.Rows.Remove(dataGridView1.CurrentRow)

C# List<T>の中身をDataGridViewに追加する方法

C#でListの中身をDataGridViewに追加する方法。 すぐに忘れてしまうのでメモ。。

▼外観はこんな感じで用意しておいて‥ f:id:moko_03_25:20171226002429j:plain ▼ボタンを押すとこうなる感じです。 f:id:moko_03_25:20171226002446j:plain

複数のListの中で最も多い要素数を割り出して、その分の行を最初に追加しています。
単にMath.Maxだと2つの値しか比較できないので、LINQで検索したら出てきたこちらの記事を参考にさせて頂きました。 qiita.com

コードはこんな感じ。

// Listの中身を適当に定義
List<string> list1 = new List<string> { "a", "b" ,"c" };
List<string> list2 = new List<string> { "1", "2", "3" };
List<string> list3 = new List<string> { "A", "B", "C", "D", "E" };
List<string> list4 = new List<string> { "4", "5", "6" };

//下準備
private void Form1_Load(object sender, EventArgs e)
{
    foreach (string s in list1)
    {
        textBox1.AppendText(s + "\r\n");
    }
    foreach (string s in list2)
    {
        textBox2.AppendText(s + "\r\n");
    }
    foreach (string s in list3)
    {
        textBox3.AppendText(s + "\r\n");
    }
    foreach (string s in list4)
    {
        textBox4.AppendText(s + "\r\n");
    }

    //行ヘッダを非表示にする ※Formデザイナーのプロパティ内でも設定可能
    dataGridView1.RowHeadersVisible = false;
}

// ボタン押下でDataGridViewに表示
private void button1_Click(object sender, EventArgs e)
{
    //Listの最大格納数を割り出す
    int iMax = new List<int> { list1.Count, list2.Count, list3.Count, list4.Count }.Max();

    //Listの最大格納数だけ行を追加
    for (int i = 0; i < iMax; i++)
    {
        dataGridView1.Rows.Add();
    }

    //行にデータを入力
    for (int i = 0; i < list1.Count; i++)
    {
        dataGridView1.Rows[i].Cells[0].Value = list1[i];
    }
    for (int i = 0; i < list2.Count; i++)
    {
        dataGridView1.Rows[i].Cells[1].Value = list2[i];
    }
    for (int i = 0; i < list3.Count; i++)
    {
        dataGridView1.Rows[i].Cells[2].Value = list3[i];
    }
    for (int i = 0; i < list4.Count; i++)
    {
        dataGridView1.Rows[i].Cells[3].Value = list4[i];
    }
}

C# UE4のアセットの命名規則チェックツールを作ってみた

QiitaのUE4アドベントカレンダー初参加です。

UE4の大量のアセットに対して「命名規則が守られているかをチェックしたい!」と思い、せっかく覚えたC#でチェックツールを作ってみました。

完成したツールはこんな感じ。

f:id:moko_03_25:20171206010311j:plain

左のテキストボックスにUE4のアセットのリファレンス情報を貼り付けて、アセットの種類に応じたボタンを押せば、命名規則が守られていないものだけが右のテキストボックスにリストアップされます。

命名規則をどうチェックするかというと、あらかじめ正しい規則をチェック用のテキストファイルに正規表現で指定しておきます。

その正規表現にマッチしないものがリストアップされるという訳です。

2017.12.17 ver2.0にアップデートしました!
 ・レベルとスケルタルメッシュを追加対応
 ・ボタンの並び順を変更
 ・アセットの種類をリファレンス情報を元に判定
  ボタンに対応するアセットが無い場合にメッセージを表示
 ・結果の数を正しい値が出るよう修正
 ・変数名や関数名が分かりにくかったので全体的に修正

2017.12.28 ver3.0にアップデートしました!
 ・チェックボタン一発で表に全タイプのアセットを一括でリストアップ
 ・Exelに貼り付け時にセル内で折り返さないようクリップボードへコピーボタンを追加

続きを読む

ライセンスについてのメモ

最近、ツールのソースコードを公開したりする機会もあり「ライセンス(使用許諾条件)」について軽く調べたのでまとめておきたいと思います。

アーティストだって素材を配布したりもするので関係ありますよね。

さて、参考にさせて頂いた記事はこちらの2つ。

続きを読む

GitHubでのツールやソース公開について(CGアーティスト向け)

GitHubって何ぞや?」なんかは「GitHub 初心者」「GitHub 入門」などでググると解説記事やスライドが沢山出てくるのでそこについては割愛して‥

じゃあ実際にGitHubでツールとかソースコードを公開しよう」と思った際に、GUIのあるツールを使った分かりやすい解説記事が案外パっと出てこない‥と思いました。

初心者向け記事の多くが「用語の説明」と「コマンドの説明」ばかりだったりで、結局色んなサイトを漁らないと手順がよく掴めないというか。。

リポジトリとか基本的な用語のいくつかは最初に覚える必要があるとして、アーティストがただ何か公開したいだけならコマンドは何も覚える必要は無いと思うのでご安心を!

という訳で、アーティストの方向けにざっくり要点を書きました。

続きを読む

C# リスト管理できるテキストエディタ「List Fusen」を制作&リリース

C#の勉強を兼ねて、複数のテキストをリスト上で切り替えながら編集できたらなあと思って作ったツール「List Fusen」を制作しました。

実行ファイルをzipにしてこちらにアップしています。
よろしければお使いになってみてください。

GitHubにも実行ファイルとソリューション一式をアップしています。
ライセンスは MIT License です。

f:id:moko_03_25:20171105190026j:plain

 2017.11/12
  Ctrl + A や Ctrl + S を入力時にシステム音が鳴る不具合を修正

 2017.11/15(ver.1.01)
  リストとテキストエディタの間をドラッグで分割サイズ変更可能に
  リスト上をF2またはダブルクリックでアイテムのリネーム
  リストアイテム削除時にダイアログ表示
  10分間隔でのオートセーブ

 2017.11/20(ver.1.02)
  リストアイテム追加時にテキストボックス内でのEnterで確定
  テキストを右端で折り返さない設定に変更
  ウインドウの分割位置を保存
  リストとテキストのフォントの設定の変更・保存に対応
  オートセーブ関連の設定の変更・保存に対応

 2017.11/23(ver.1.03)
  タブスペースに対応
  プログラムアイコンを設定

 2017.11/24(ver.1.04)
  タスクバーのアイコンとツール名表示に対応
  上記対応のためにフォームの枠を取り払ってツールのサイズ変更を実装

 2017.11/27(ver.1.05)
  ツール設定でテキストを右端で折り返す設定に対応
  二重起動を禁止していたのを解除

 2017.11/28(ver.1.06)
  テキストに変更があった際にDirtyマークを表示

 2018.1/22(ver.1.06)
  ツール上部のバージョン表記が間違っていたので修正

 2018.5/8(ver.1.07)
  ツールのアクセントカラーがオプションで変更可能に
  それに伴いアイコンのアクティブ時の色を修正
f:id:moko_03_25:20180509010345j:plain

 2018.5/9(ver.1.08)
  パネルのアクセントカラーが初期化されない不具合を修正
  オプション設定での変更がその場ですぐ反映されるよう対応

続きを読む