パスワードを忘れた? アカウント作成

wuzhiさんのトモダチの日記みんなの日記も見てね。 スラドのRSSを取り込んでみよう。

15275547 journal
Java

wuzhiの日記: JOGLでマルチテクスチャ

日記 by wuzhi

五月連休.フィールドアスレチック や 神社参拝,川沿い遊歩道散策をしつつも,いつもの 3Dプログラミング.

ここ数日は,JOGL (Java OpenGL) のマルチテクスチャ処理のプログラミングをしていた.
https://marina.sys.wakayama-u.ac.jp/~tokoi/?date=20050615
https://jogamp.org/deployment/jogamp-next/javadoc/jogl/javadoc/index.html?index-all.html
等を参考に.(なお,ここで言うマルチテクスチャ(複数テクスチャ)とは,一つの3Dモデルに対して,複数(種)のテクスチャを同時に適用すること.)

今回のお試しでは,ベースの teapot モデルに対して,チェック の テクスチャ と スフィアマップ のテクスチャを適用している.

複数テクスチャの内の一つ,スフィアマップのテクスチャは,こちらを拝借した.
https://seiga.nicovideo.jp/seiga/im8123098

もう一つの,チェック テクスチャは,ネットでパッと適当なものが見つからず,しかし簡単なものなので,GIMP で自作した.
https://commons.nicovideo.jp/material/nc241930

以下,模擬コード.(所々,省略している)

GLUT glut = new GLUT();

//JOGLの場合,このinit(...)にて色々と初期化処理が要る
final public void init(final GLAutoDrawable drawable){
        gl = drawable.getGL().getGL2(); //GLを取得しておく
        textureCheck = TextureIO.newTexture(new File("check.png"), true); //ファイルオープンと,glTexImage2D(...)に相当することをやってくれる,JOGL のAPI
        textureSphereMap = TextureIO.newTexture(new File("spheremap.png"), true);
        ...
}

//JOGLの場合,このdisplay(...)内にて描画処理を呼ぶ
final public void display(final GLAutoDrawable drawable) {
        ...
        gl.glActiveTexture(GL.GL_TEXTURE0);
        textureCheck.enable(gl); // glEnable(textureCheck.getTarget()); と同じ.なお,ここで言うgetTarget()のtargetとは,GL_TEXTURE_2D や GL_TEXTURE_RECTANGLE_ARB のこと.
        textureCheck.bind(gl); // glBindTexture(textureCheck.getTarget(), texture.getTextureObject()); と同じ.
                                                          // なお,ここで言う getTextureObject() の object とは,言わば読み込んだテクスチャ画像一つ一つに割り振られる識別子のよーな物で,テクスチャユニットとは別のもの!

        gl.glTexParameteri(GL.GL_TEXTURE_2D, GL.GL_TEXTURE_WRAP_S, GL.GL_REPEAT); // テクスチャの張り付け方を指定(横方向)
        gl.glTexParameteri(GL.GL_TEXTURE_2D, GL.GL_TEXTURE_WRAP_T, GL.GL_REPEAT); // 同上(縦)

        gl.glActivateTexture(GL.GL_TEXTURE1); // テクスチャ ユニット1に切り換える!
        textureSphereMap.enable(gl);
        textureSphereMap.bind(gl);

        gl.glTexEnvi(GL2ES1.GL_TEXTURE_ENV, GL2ES1.GL_TEXTURE_ENV_MODE, GL2ES1.GL_MODULATE); // 今回拝借しているテクスチャファイルは "乗算"スフィアマップなので,このように指定
        gl.glTexGeni(GL2.GL_S, GL2.GL_TEXTURE_GEN_MODE, GL2.GL_SPHERE_MAP); // スフィアマップの場合の指定(横)
        gl.glTexGeni(GL2.GL_T, GL2.GL_TEXTURE_GEN_MODE, GL2.GL_SPHERE_MAP); // 同上(縦)
        gl.glEnable(GL2.GL_TEXTURE_GEN_S);//テクスチャ座標の自動生成を有効にする
        gl.glEnable(GL2.GL_TEXTURE_GEN_T);//テクスチャ座標の自動生成を有効にする

        glut.glutSolidTeapot(1.0); // 描画

        gl.glDisable(GL2.GL_TEXTURE_GEN_S);//テクスチャ座標の自動生成を無効にする
        gl.glDisable(GL2.GL_TEXTURE_GEN_T);//テクスチャ座標の自動生成を無効にする

        gl.glActiveTexture(GL.GL_TEXTURE0); // 元(デフォルト)のテクスチャ ユニットに戻しておく

        ... // 後略
}

一連の結果(テクスチャを適用したりしなかったり)が,以下の画像.
https://seiga.nicovideo.jp/seiga/im10739204

今回は少し手こずった…
今回のお試しでは,GLSLシェーダ による処理は未だ行っていない.
今回の処理を踏み台に,GLSLシェーダに対して複数テクスチャ(スフィアマップだけでなく,BumpマップやNormalマップ等)や時刻データ等を渡せば,その先の本当にやりたかったことの一つができる筈.

15194753 journal
SNS

wuzhiの日記: Discordインストール

日記 by wuzhi

スマホにDiscordをインストールしてみた.
https://discord.com/
後でデスクトップPCの方でも試してみよう.
自分にとって,LINEの代替となりうるか…?

15171808 journal
アップグレード

wuzhiの日記: Genymotion アップデート インストール

日記 by wuzhi

何日かぶりに起動しようとしたら,仮想デバイスが起動しなくなったり,そもそもGenymotion自体が起動しなくなったりした.
色々と設定見直し等による修復を試みたけれど,結局,最新版をダウンロード・インストールした.

https://www.genymotion.com/
https://www.genymotion.com/download/

with VirtualBox 版をダウンロード・インストールして,今までの仮想デバイスを引き続き起動できた.

15036078 journal
インターネット

wuzhiの日記: NTTカード重要なお知らせ

日記 by wuzhi

Dカード利用いただき、ありがとうございます。
このたび、ご本人の利用かどうかを確認させていただきたいお引取がありましたので、誠に勝手ながら、カードのご利用を一部
製つきましては、以下へアクセスの上、カードのご利用確認にご協力をお願い致します。
(以下略)

…というメールが,Dカード(no-reply@d-cardgsvs.cards)からきた.

怪しいメールだと思ってリンク等はクリックしなかった.
やはり,迷惑メールの類だったようだ.
https://www.nttdocomo.co.jp/info/spam_mail/column/20170509/

14981264 journal
Java

wuzhiの日記: Javaで音声ファイルを再生する方法

日記 by wuzhi

なんとなく,まとめてみる.

・Java Sound APIを使う
import javax.sound.sampled.~ ってやるやつ.
現状,私が自作ゲームでも採用している方法.
.mp3は鳴らせないけど,.wavは鳴らせるから….手軽だったし.

・アプレットAPIを使う
import java.applet.AudioClip; ってやるやつ.
現在は,もう非推奨とのこと.

・JavaFXを使う
import javafx.scene.media.~ ってやるやつ.
.mp3も鳴らせるらしい.
が,Java11からJavaFXが同梱されなくなっており,別途ダウンロードが必要とのこと.(いつの間に…)

・他の人が作ったAPIを使う
http://www.javazoom.net/jlgui/api.html
これとか.

14975628 journal
ソフトウェア

wuzhiの日記: Metasequoiaのバイナリファイルフォーマット(.mqoz) 1

日記 by wuzhi

久しぶりにMetasequoiaでメタセコファイル新規作成・出力保存したら,ファイル拡張子が.mqozのバイナリ形式で出力するようになっていた(4.7以降?).
自作Javaプログラムでも,旧テキスト形式ファイル(.mqo)の読み込み・描画処理に加えて,新しいバイナリ形式ファイル(.mqoz)の読み込み・描画にも対応しないといけないかなぁ,バイナリファイルフォーマットの解説ドキュメントはどこだろう,と探したところ
http://www.metaseq.net/jp/format.html
https://www.metaseq.net/bbs/metaseq/bbs.php?sel=8231

単なるzip圧縮ファイルのようで,ファイル拡張子を変えて展開したところ,確かにテキストの.mqoファイルが出てきた.
…とりあえずは,自作Javaプログラムでのバイナリ形式ファイル(.mqoz)対応は要らなさそうか.

14970322 journal
Java

wuzhiの日記: Effective Java 第3版 購入

日記 by wuzhi

云年前に第2版を購入したけれど,いつの間にか第3版が出ていて,先日に今更ながら購入した.
https://www.maruzen-publishing.co.jp/item/?book_no=303054
また少しずつ読んでいって勉強しよう.

14303460 journal
お金

wuzhiの日記: 銀行通帳記入確認

日記 by wuzhi

ここ何日かで話題になっているドコモ口座の件に関連して.
遅ればせながら,勤め帰りに,銀行(複数)に行って通帳記入してきた.
とりあえず,身に覚えのない怪しい記録記載(ドコモコウザとか)は無し.

14288288 journal
データベース

wuzhiの日記: 自転車防犯登録を更新

日記 by wuzhi

更新しなくとも,現番号で探すことはできるけれど.
仕事で遅くなり,夜に自転車に乗ってて警察の人に呼び止められることは私の場合よくあるし,
高くもないので,自転車屋さんに前の自転車防犯登録カードを持って行って,更新した.

14250292 journal
おもちゃ

wuzhiの日記: 10面体ダイス購入

日記 by wuzhi

高精度でなくて良い,アナログで手軽な乱数生成にちょっと欲しくて,色違いで4つ買った.百円ちょっとx4個.
10面体のとなると,近場のおもちゃ屋さんには置いてなくて,東急ハンズでその他の買い物ついでに買った.

昔々,TRPGをやっていた時に,10面体ダイスを色違い透明色で2個持っていた.
その当時と同様の透明色でちょうど良いのがあれば懐かしかったけど,気に入った透明色が売り場になかったので,不透明のものにした.
まぁ,透明色だとちょっと高いし.

東急ハンズで無ければ,懐かしさついでにボードゲーム/TRPGを扱っているような専門店? に行ってみようかなとも思ったけど,そこまでにはならず.
そもそもネットで買えばすぐなんだけど,たかだかトータル数百円のものだけをネットで買うのも何なので….

typodupeerror

皆さんもソースを読むときに、行と行の間を読むような気持ちで見てほしい -- あるハッカー

読み込み中...