生成AIを活用したSaaSサービス提供企業

  • Company
    • Company
    • 会社概要
    • グループ会社
  • Service
  • Work
  • News
  • Recruit
  • Blog
  • Contact

ブログBlog

  • ALL

  • お知らせ

  • 技術/デザイン/制作

  • ベトナム

  • ごはん

  • 日常/プライベート

  • WebGL+HTML5で3DCGを勉強してみた! Part4

    どうも。営業部の伊藤です。

    当シリーズも今回で最後です!!!
    かなり間があきましたが、、、ちゃんと書きます。

    前回のブログでSTEP4の「モデルデータを用意」とSTEP5の「モデルデータからVBO(VertexBufferObject)を生成&バインド」まで書きましたので、今回は3DCG描画の仕上げである
    STEP6「座標変換行列を生成&通知」
    STEP7「描画命令」
    STEP8「STEP6~7の再帰処理(canvasをレンダリング)」
    を書きます。

    モデルデータからVBO(VertexBufferObject)の生成&バインドまで終わりましたので、最後に三次元を二次元に変換してみようと思います。
    通常人間が見ている物体は三次元空間に存在しますので、全てのものに縦と横と奥行きがあります。ただし、モニター上では三次元情報を出力できない(実際には出力できるものもあります)ので、シュミレーションしたモデルデータを擬似的に三次元に変換して表示する必要があります。
    ここで必要となる情報、計算が「座標変換行列」です。
    この行列には「モデル変換(ワールド変換)」、「ビュー変換」、「プロジェクション変換」と計3種類あり、これらを組み合わせて計算することで擬似的に三次元を二次元空間で再現する事ができます。

    それぞれの変換定義を私なりに認識で簡単に書くと、以下のようになります。

    ○モデル変換
    物体が存在するためには基準となる原点があり、またそれが相対的にどこにあるかという位置を定義する必要があります。
    空間、また物体の相対的位置を定義するのがモデル変換です。

    ○ビュー変換
    当たり前ではありますが、物体を見る為には「目」が必要になります。
    ビュー変換はその「目」がどの位置にあるのか、またどこを向いているのかを定義するものです。

    ○プロジェクション変換
    最後に、ビュー変換で定義した「目」がどこまで見えるのか、どこまで見るのかも定義が必要です。
    人間の目にも視野、視力があるように、三次元を描画する際にもどの領域を表示するのか、どこまで(距離)表示するのかを定義するのがプロジェクション変換です。

    ビュー変換、プロジェクション変換用の配列、計算にはPart1で紹介した「glMatrix.js」を利用させていただきました。

    STEP6~STEP8の一連の処理を実行しているdrawObject(Function)で該当部分を確認していきます。

    requestAnimFrame(drawObject);
    gl.viewport(0, 0, canvas.width, canvas.height);

    まずはrequestAnimFrameで3DCG描画処理の再帰(ループ)を命令しています。
    こちらもwebgl-utilというライブラリを利用しています。
    その後、viewportでWebGLに三次元空間を表示する領域を設定します。

    var rad = (count % 360) * Math.PI / 180;
    var x = Math.cos(rad);
    var y = Math.sin(rad);
    var mod = count % 4;
    var s = Math.sin(rad) + 1.0;
    var timeNow = new Date().getTime();
    if (lastTime != 0) {
    var elapsed = timeNow – lastTime;
    rotate += (90 * elapsed) / 1000.0;
    }
    lastTime = timeNow;
    count++;

    mat4.identity(matrixMove);
    mat4.translate(matrixMove, [x, y, -7.0]);
    mat4.scale(matrixMove, [s, s, 0.0], matrixMove);
    mat4.rotate(matrixMove, rotate * Math.PI / 100, [0, 1, 1]);
    vertexMatrix2 = gl.getUniformLocation(shaderProgram, “vertexMatrix2”);
    gl.uniformMatrix4fv(vertexMatrix2, false, matrixMove);

    モデル変換で弧を描いたり、前後に移動させたりするための各種計算処理を実施後、シェーダ側に値を受け渡します。
    x、yが座標用、modが瞬き用、sが大きさ、rotateが回転の値です。

    mat4.perspective(75, canvas.width / canvas.height, mod, 90, matrixPerspective);
    vertexMatrix1 = gl.getUniformLocation(shaderProgram, “vertexMatrix1”);
    gl.uniformMatrix4fv(vertexMatrix1, false, matrixPerspective);

    次にプロジェクション変換用にどの領域を表示するのか、どこまで(距離)表示するのかを設定します。
    描画シーンの視野角や表示領域の横幅と高さの比、視力(非表示とする距離)を設定後、シェーダ側に値を受け渡します。
    ここで特殊なのが、modの部分です。本来であればこれより近づいたら表示しない距離を設定するため固定値になると思いますが、今回は(目の)瞬きを想定して定期的に視野を無くすためmodを設定しています。

    var vertexPosition = gl.getAttribLocation(shaderProgram, “vertexPosition”);
    gl.bindBuffer(gl.ARRAY_BUFFER, vboPosition);
    gl.enableVertexAttribArray(vertexPosition);
    gl.vertexAttribPointer(vertexPosition, 3, gl.FLOAT, false, 0, 0);

    vertexTexture = gl.getAttribLocation(shaderProgram, “vertexTexture”);
    gl.bindBuffer(gl.ARRAY_BUFFER, vboSurface);
    gl.enableVertexAttribArray(vertexTexture);
    gl.vertexAttribPointer(vertexTexture, 2, gl.FLOAT, false, 0, 0);
    gl.activeTexture(gl.TEXTURE0);
    gl.bindTexture(gl.TEXTURE_2D, cubeTexture);

    gl.drawElements(gl.TRIANGLES, 36, gl.UNSIGNED_SHORT, 0);

    最後に、STEP3で用意していた物体自体の座標情報、テクスチャ座標などをシェーダ側に受け渡し、描画(drawElements)します。
    ここまでの一連の流れ(drawObject)を再帰的に実行することで三次元空間を表現し、且つ動きを表現します。

    Part1の投稿からちょうど2ヶ月が経ちましたが、簡単なWebGLの実装については以上です。
    正直なところ、色々と忘れてしまっているので…これからも定期的に復習、コーディングしようと思います。
    また気が向いたら三次元POSTします!

    ではでは。

    このエントリーをはてなブックマークに追加
    Share on Tumblr
    Tweet

    伊藤 康平投稿者 伊藤 康平

    投稿日: 2013/01/23

    カテゴリー 技術 / デザイン / 制作
  • 香るマスク

    こんにちは。
    伊藤です。

    まだマスクを手放せない季節です。

    この前テレビでマスクの特集がやっていたのですが、
    日本のマスクを紹介していました。

    何でもアロマの香りがするらしくリラックスする為のマスクのようです。

    なんでこのようなマスクが出てきたかというと、

    デスクワークなど、落ち着くアロマを嗅ぎながら
    ゆっくりしながら仕事したいけどお香とか炊けないし
    そういう匂いが苦手な人もいる!

    そこで、自分だけの範囲で且つ効果的に匂いが体感できる
    マスクに注目したそうです。

    デスクワーク以外にも雨の日の満員電車など臭いがこもった所でも
    自分の口元だけいい匂いがするのでそうゆう場面など
    色々な場面で使え便利そうです。

    中の構造は臭いの付いた生地がマスクに入って
    いてそれを付けるだけのシンプルな構造で、
    約一日持続するようです。

    デザインが可愛らいしいのでちょっと男が付けるにはアレですが
    男性用とか出たら一度使って見たいなと思いました。

    ちょっと短いですがこの辺で!
    ではでは!

    このエントリーをはてなブックマークに追加
    Share on Tumblr
    Tweet

    伊藤 博孝投稿者 伊藤 博孝

    投稿日: 2013/01/22

    カテゴリー 日常 / プライベート
  • Passbook(iOS6)便利ぃ〜

    2013-01-22 21.25.30
    こんばんわ、加藤です。

    年末年始ちょっと諸用で週末福岡とか大阪とか札幌とかちょろっと美味しい物食べにいってたんですが(仕事じゃないです)
    飛行機ってあるじゃないですか、空飛ぶやつ。
    昔はチケット買って郵送されてきて、チェックインカウンター行って、よくわからん紙とかもらって・・・だったものがEチケットとやらでメールできたPDFとか印刷して持っていけばチェックイン不要!っていう時代になりましたね。便利ですね。

    とか思ってたのに、そこにPassbookですよ。
    Eチケットを過去に3回位忘れていって同行者が見越して僕の分も持ってきてくれてた。とか帰りの飛行機乗るときにはすでにグチャグチャとか、そんな私への救世主でした。

    iPhone持ってない方、Passbook使ったことない方にPassbookを説明すると

    今のところANAだけなのですが、飛行機を予約するとメールが来ますよね、そのメールにEチケットとかを取得するURLがあります。
    Eチケット取得用のページへ行くと「iPhoneへ送る」的なリンクがあるのでそれを押すとメールアドレス入力してiPhoneにメールを送る事ができます。

    そしてiPhoneでそのメールに入っているURLを開くと「Passbookに登録する」というボタンがあるのでそれを押すと
    QRコードがPassbookに登録されます。
    これで終わりです。上記の画面のようにiPhoneが航空チケットになります。
    初回の手続きがちょっと面倒臭いし分かりにくいんですけど、これで必ず忘れずに持っていくiPhoneを持っていくだけでちょちょ〜っと保安検査場も搭乗口も通ることができます。

    手ぶらもいいとこ!忘れる心配がない!
    充電だけは忘れずに!

    注意点としては
    事前にちゃんとWEB上で席を指定しておかないと保安検査場で止められてしまって万能感が薄れます。(その場で座席取ってくれるので時間ロスは大したことないですが、座席が決まってないと通れないそうです)

    ほんとにEチケットもただの紙だしいいじゃん!って思うと思うんですけど、実際に経験すると凄い時代を感じますよ。紙すらいらないというこのノーストレス感。ぜひ一度経験していただきたいです。

    まぁ、僕はもうANAだと高いので次回からはLCC乗りますけど。

    このエントリーをはてなブックマークに追加
    Share on Tumblr
    Tweet

    加藤 彰則投稿者 加藤 彰則

    投稿日: 2013/01/22

    カテゴリー 日常 / プライベート
  • フォカッチャを食す

    お疲れ様です。横井です。

    ブログの回転率が良すぎて、前回の投稿が昨日のことのようです。
    正直月1ぐらいのペースでないと、なかなか良さげなネタが出てこないです。
    それでも、何か書かないといけないルールですので、食べ物ネタを書こうと思います。

    テレビのCMで気になっていましたモスバーガーのフォカッチャを食べてきました。
    フォカッチャは、外のバンズの部分がナンになっていまして、長いナンを真ん中で折り曲げるようにして、間に具をはさんでおります。

    フォカッチャには2種類(”バーベキューフォカッチャ”と”コロッケフォカッチャ”)ありまして、
    “バーベキューフォカッチャ”の方が具がソーセージでソースがバーベキュー味
    “コロッケフォカッチャ”の方が具がコロッケでソースが揚げ物用の濃口ソース
    となっていました。

    個人的にはどちらもナンの食感と間の具の食感とのマッチングが良く、大変おいしかったです。
    残念なことに、先日の日曜日に地元のモスへ行ってみたところ、既に”バーベキューフォカッチャ”が販売終了となっておりまして、”コロッケフォカッチャ”のみの販売になってました。
    まだ、食べてない方は”バーベキューフォカッチャ”を食べられるうちに、食べてみてほしいです。
    私も、コロッケフォカッチャが終了する前にもう一度食べておきたいと思いました。

    今回はこの辺でおしまいです。
    ではでは。

    このエントリーをはてなブックマークに追加
    Share on Tumblr
    Tweet

    アバター投稿者 staff

    投稿日: 2013/01/222024/04/26

    カテゴリー ごはん
  • 初サバゲ

    どうも、絶賛筋肉痛のむかいだです。
    昨日、初めてサバゲなるものに参加してきました。

    お邪魔したのは昨年都内にオープンしたMMSさん!
    新大久保駅から歩いてみましたが、運動不足の方には準備体操にちょうどいいかも?

    元パン工場!地下!ということもあって、廃墟好きの血が騒ぐ環境!
    フィールド紹介にもあるように、バリケードは日によって配置がかわるとのこと…
    地下という事もあって、暗闇戦もできました~。非常灯で適度な暗闇でいい感じ!

    今回はメンバーの半数以上が10歳以上対象のボーイズ用エアガンをお借りしてのゲームだったため、特に大きなけがもなく、楽しめました~
    ボーイズ用は18歳以上対象のものより、弾速が遅めで、あまり痛くないので女性にもおすすめです!

    すごく広い…というわけではないので、ライトに楽しめて良かったです~
    初心者でも十分楽しめましたよ!
    銃の扱いやルールなど、基本的なレクチャーもしていただけました~
    おまかせパックというのも来月から出るらしいので、初心者におすすめです!

    また行きたいなと思っているので、春くらいに企画できれば…と思ってます。
    もし興味のある方は是非ご連絡くださ~い!

    このエントリーをはてなブックマークに追加
    Share on Tumblr
    Tweet

    アバター投稿者 staff

    投稿日: 2013/01/212013/01/21

    カテゴリー 日常 / プライベート
  • ベトナム語の学習

    PM部の天野です。
    Amano thuộc bộ PM.
    私はベトナムに4年間住んでいまして、その時にベトナム語を勉強しました。
    Tôi đã sống ở VN 4 năm, trong khi đó tôi học tiếng Việt.
    一応話せるようになり、仕事の中で通訳さんは必要にならなくなりました。
    Tôi có thể nói chuyện với người VIệt bằng tiếng Việt được. Trong công việc, tôi không cần người phiên dịch.
    日本に帰国して2年になり、ベトナム語をあまり使わなくなりました。そのため、私のベトナム語能力が段々下がってきました。
    Sau khi tôi về nước, 2 năm qua rồi. Tôi ít khi sử dụng tiếng Việt. Vì vậy khả năng tiếng Việc của tôi càng ngày càng kém.
    よくNHKのベトナム語版を読んだり、時々ベトナム語でブログを書いていますが、話すのは日本では機会が無いですね。
    Tôi thường đọc NHK bằng Việt Nam, thỉnh thoảng tôi viết blog bằng tiếng Việt. Nhưng việc nói thì ở Nhật không có cơ hội nói chuyện với người Việt.
    こんな言葉を聞いた事があります。「言語の学習はスポーツと同じだ」。意味としては毎日練習しないと上手にならないということです。
    Nghe nói là “Việc học ngoại ngữ giống như là thể thao”. Có nghĩa là mỗi ngày luyện tập thì sẽ được giỏi.
    確かにそうですね。使わなければ上手にならないですよね。そこで、このブログをベトナム語でも書いてみました。
    Uhm… đúng rồi. Không sử dụng thì sẽ không giỏi. Vì vậy, tôi viết blog này bằng tiếng Việt để không quên tiếng Việt.

    ※上の文章を範囲選択して反転させると見えます。

    これからも、ベトナム語の勉強を頑張りたいと思います。
    Tôi cố gắng học tiếng Việt chăm chỉ.

    このエントリーをはてなブックマークに追加
    Share on Tumblr
    Tweet

    アバター投稿者 staff

    投稿日: 2013/01/21

    カテゴリー 日常 / プライベート

投稿ナビゲーション

前のページ ページ 1 … ページ 343 ページ 344 ページ 345 … ページ 556 次のページ