« 2008年12月 | トップページ | 2009年2月 »

2009年1月23日 (金)

[技術ネタ] Java でグラフィックスする場合のお勧め本

また、技術ネタで失礼いたしますsnow

最近購入したJavaのグラフィックス「Filthy Rich Clients」の日本語版が中々面白かったのでご紹介しておきます。

~・~・~

この本、結構前に英語版が出ていて、必要そうな項目だけ拾い読みしていたのですが、昨年11月に日本語版が登場し、立ち読みしてみたところ細かい記述に「へぇ」という部分が多く、日本語版も購入(英語で全文読む英語力と体力があれば必要なかったんですがcrying)。

Javaでグラフィックスをやるという酔狂な方は必携の一冊。

(ちなみに、Javaでグラフィックスをやる魅力は何と言ってもMacユーザさんに喜んでもらえることかと。Live2Dのユーザさんは推定3割ぐらいMacのようです。)

滅多に触れられていないSwingの描画やイベント処理、スレッドに関する重要なことや、パフォーマンスに関する注意事項が盛りだくさんです。もちろん、グラッフィクスについても基礎から応用(床の反射表現や、Swingのアニメーション化など)までたっぷり600ページも記載されています。

~・~・~

例えば、AWT/Swingの処理は単一のEDT(イベント処理スレッド)で処理しないといけない約束なのは割とどこにでも書いてあるのですが、下記のように main() でSwing記述も本当は許されないのだとか。

ちなみに、WikipediaのSwing の項目ですら下記のように書いています。

import javax.swing.JFrame;
import javax.swing.JLabel;

public class HelloWorld {
    public static void main(String[] args) {
        JFrame frame = new JFrame();
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.getContentPane().add(new JLabel("Hello, world!"));
        frame.setLocationRelativeTo(null);
        frame.pack();
        frame.setVisible(true);
    }
}

「Filthy Rich Clients」によると、下記のように書くのが正解なのだそうです。

public static void main( String[] arg){
    SwingUtilities.invokeLater( new Runnable(){
        public void run(){
            JFrame frame = new JFrame() ;
            ...
        }
    }
}

初心者だったら、何が何だか…これだとSwingの普及に益々歯止めが掛かりそうなんですがrain 

こういった細かい原理と、高速にグラフィックス処理するためのTipsなどが盛りだくさんですので、ますます酔狂になりたい方は是非。


英語版と日本語版ソックリですのでくれぐれもご注意ください(笑)
当社の本棚にはこの二冊が仲良く並んでます。。

1月 23, 2009 | | コメント (2) | トラックバック (0)

2009年1月21日 (水)

[技術ネタ] Java JOGL(OpenGL)でのエラーについて(覚書)

久々に技術ネタで失礼いたします。

~・~・~

Java+JOGLを使っていて、

javax.media.opengl.GLException: Error making context current: 6

とか

javax.media.opengl.GLException: Context not current on current thread

というようなエラーが発生して困った場合は、

 

AWT/Swingのイベント処理スレッド(Event Dispatch Thread = EDT)で、例外を catch し忘れた場合にEDTは一旦破棄され、新たに別のスレッドがEDTとして動きだし殆ど場合復帰しますが、JOGLは元のEDTと紐づけされて動いているため上記のエラーが発生するようです。

上記の例外が発生した場合、OpenGL周りの処理を再度初期化してあげれば復活するようです。

もともと例外を発生させない&例外を取りこぼさないのが最善ではあるわけですが。。

1月 21, 2009 Java | | コメント (2) | トラックバック (0)

2009年1月14日 (水)

愉快な仲間が増えました!

この度、Nさん(伏せる必要もないですが)が取締役に就任して下さいました。

以前から、Live2Dの可能性に本気で共感できる方に経営パートナーになって欲しいと願いながらも、そう都合よく見つからず、はや二年が経ちましたが、そろそろ勝負を掛ける!という段階で望んだとおりの理想的な方に巡り合えたのは運命というか、とてもよい流れが来ているように感じています。

同時に、増資して会社の資本も100%自己出資ではなくなりましたので、社会の公器としての責任をより自覚しながら、健全な発展を目指していきたいと思います。

渋沢栄一の「論語と算盤」の精神に則りながら、世界をアッと言わせるモノ創りをしていきたいと思いますので、今後とも応援よろしくお願い申し上げます!

sunshine sunshine sunshine sunshine sunshine sunshine

(でも、新年の決意「ブログ週一更新」を最初から破ってしまいました(T_T)・・・) 

1月 14, 2009 日記・コラム・つぶやき | | コメント (2) | トラックバック (0)

2009年1月 6日 (火)

[Live2D] 曲線の品質が向上しました。

当ブログを楽しみにしておられる、超マニアックな皆様(…が、いるかどうかは別にして)

明けましておめでとうございます!!

本日、さっそく Live2D Modeler/Animatorをバージョンアップしました。

こまごまと直したところも多いのですが、大きな修正点として、

~・~・~ ~・~・~ ~・~・~ 

★1 曲線の端、角の形状を変えられるようになりました。

Screen42この機能、普通のグラフィックツールには当たり前に備わっているのですが、Live2Dでは線幅を自由に変えられるため、すこし計算、処理が面倒で先延ばしになっておりました。

ようやく当り前のことが当たり前にできるようになっただけのことで、長所になるわけではないのですが、これまでよりも色々と描きやすくなると思います。

とくに、『髪の毛の先っぽを尖がらせるとき』、『二つの曲線の端がつながっているフリをするとき』などに役立ちます。

★2 閉じた曲線を、開いた曲線にできるようになりました。

Screen43 これまでは一度曲線を閉じると二度と開くことができないという、奇抜な仕様でしたが、点を削除(Deleteまたは BackSpace)することで、開くことができるようになりました。

これまた、当り前すぎることで、お恥ずかしい限りです。





★3 スナップショットが出ないバグを修正しました。

Screen44 違うパラメータのときのキャラクターを表示しておいて、違いを確かめながら処理する機能が、少し前のバージョンアップ以降使えなくなっていたバグを修正しました。

~・~・~ ~・~・~ ~・~・~ 
その他にもこまごまと修正しておりますので、詳しくは

をご覧ください。

~・~・~ ~・~・~ ~・~・~ 

おまけですが、今年の抱負は「ブログを週1回以上書くこと!」です。頑張ります!

それでは、本年もよろしくお願いいたします!!!

1月 6, 2009 Live2D | | コメント (2) | トラックバック (0)