内容に「C」を含む
151〜160件目 / 223件
前へ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 次へ

 WebGLを動作させるためのブラウザをインストールする方法(Mac編) / magicien 

MacでWebGLを動作させる方法。

現在、WebGLが動作する環境は、WebKit、Minefield、Chromiumの3つ。
いずれも開発版なので、バグやらセキュリティホールやらがあるかもしれません。
インストール、実行する場合は、自己責任で行うようお願いします。
3つとも既存のブラウザの開発版であり、場合によっては正規版のブラウザに影響を及ぼす場合があります。
インストールの前に、ブラウザの設定やデータをバックアップしておくことをお勧めします。
あるいは、普段使っていないブラウザの開発版を利用すると良いかもしれません。

WebKit(Safariの開発版)のインストール方法


下記URLから、Mac用のものをダウンロード。
http://nightly.webkit.org/
ダウンロード後、WebKitのアイコンを「アプリケーション」フォルダにドラッグ&ドロップ。

次に、ターミナルを起動し、
defaults write com.apple.Safari WebKitWebGLEnabled -bool YES
というコマンドを実行。
これで、WebKitでWebGLが動作するようになる。

Minefield(Firefoxの開発版)のインストール方法


下記URLからMac用のパッケージ(例:firefox-3.7a4pre.en-US.mac.dmg)をダウンロード。
http://ftp.mozilla.org/pub/mozilla.org/firefox/nightly/latest-trunk/
ダウンロード後、Minefieldのアイコンを「アプリケーション」フォルダにドラッグ&ドロップ。

次に、Minefieldを起動、URL入力欄に「about:config」と入力。
すると、警告画面が表示されるので、「I'll be careful, I promise!」というボタンをクリック。
設定一覧が表示されるので、その中から、「webgl.enabled_for_all_sites」を選び、ダブルクリックする。
(Filterにwebglと入力すると、項目が絞り込まれるので探しやすい。)
webgl.enabled_for_all_sitesのValueが「true」になっていればOK。
これで、MinefieldでWebGLが動作するようになる。

Chromium(Chromeの開発版)のインストール方法


下記URLからMac用のパッケージ(chrome-mac.zip)をダウンロード。
http://build.chromium.org/buildbot/continuous/mac/LATEST/
ダウンロード後、Chromiumのアイコンを「アプリケーション」フォルダにドラッグ&ドロップ。

次に、以下のコマンドでChromiumを起動(コマンドによる起動は毎回必要)。
/Applications/Chromium.app/Contents/MacOS/Chromium --enable-webgl
すると、ChromiumでWebGLが動作する。
もしローカルファイルにアクセスする場合は、--allow-file-access-from-filesのオプションも付けて起動する。

実際に使ってみたところ、動作スピードは、
Safari > Chromium > Firefox
といったところ。Firefoxはちょっとカクカクだったり、動作が変だったりしましたが、
SafariとChromiumは割とサクサク動作しました。

2010/08/10 追記:
Chromiumの起動オプションを修正。
なんだかChromiumでのWebGLの表示が変だ...

2010/03/27(Sat) 23:47:00

 スキンメッシュアニメーション / magicien 

案の定詰まった。

影響を与えるボーンとマテリアルが共通している頂点をグループにして、
グループ毎に描画すればいいやと思ったけど、
ポリゴンって頂点3つだから、組み合わせによっては面倒なことになりそう。
都合の良いデータしかないと信じて実装してみるか...

ただ、今までマテリアルだけでグループ分けしていたものを、
もっと細かく分割するとなると、データ転送と描画の回数が増えてしまう。
JavaScriptでの演算回数は減るけど、速度向上するかどうかは不明。

せめて30fpsは出したいところ。

2010/03/17(Wed) 21:17:44

 WebGL一段落 / magicien 

IKもなんとか動いた...かなりぎこちないけど。

IKがうまく動作しなかった原因は、単純なtypoと、僕が人体の構造を理解していなかったことです。
膝って回転軸固定なんだなってことを今更ながら知った。

そろそろ公開に向けて動き出そうか、もう少しチューニングしようか...
Safariで確認すると、目算だけど、20fpsぐらい。Firefoxだと4fps...
計算量が多すぎるのか、クラスを作りすぎたのか、とにかく遅い。
スキニング(が出来てない気がする、関節を見ると。でも実装は一応した。)をJavaScriptで計算してるんですが、
これをシェーダに移行すれば、もう少しマシになるかも。
明日あたり実装してみて、簡単にできそうなら、それが終わってから公開ということにしようと思います。

2010/03/17(Wed) 01:54:13

 今のところは大きな問題なし / ノリオ 

昨日magicienがブログパーツのひな型を作ってくれたので、早速いじってみた。
何分ドシロートなもので、思わぬところでつまづくことが多々あり。
まず、特定のキーワードを検索するところから作ってみたけど、日本語だと文字コードの問題があるんですな・・・編集してるファイルの文字コードをUTF8にしたら解消された。
デザインの問題を抜きにすると、次はキーワードの検索範囲からユーザー名を除外するところとか加えてみるかな。
2010/03/14(Sun) 11:04:14

 ベジェ再び / magicien 

ベジェ曲線難しい...

WebGLで3Dモーションデータを読み込んで、表示させるっていうのをやっているんですが、
キーフレームの間を3次のBezier曲線で補間する仕様になっていて、
4つの制御点からx座標に対応するBezier曲線のy座標を求めなくちゃいけない...

最初は方程式を解けば簡単だろうと思って、3次方程式の解の公式を調べてみたところ、
...やめよう、と思いました。
となると、2分法やらBezier Clippingとやらで近似値を求めることになるんだろうけど、
計算量が多くなりそうなのと、単純にプログラムを書くのが面倒。
行列計算に比べれば、ずっと計算量は少ない気もするけど...どうするかなぁ。
両端の制御点が固定であることと、xが単純増加っていう縛りがあるから、簡単な計算式があるのかも。
そこら辺のことは疎いのでよくわかりません。
誰か教えてください!

いっそのこと、tとxはだいたい同じ、と考えてパラメータtをx座標の代わりに使ってしまおうか...

2010/03/07(Sun) 01:46:50

 WebKit Nightly Builds / magicien 

WebGLアプリの開発には、Webkit Nightly Buildsを使ってます。

Nightly Buildsというわけで、毎晩最新版がリリースされるわけですが、
厄介なことに、更新する度にWebGLの仕様が変わったり、動かなくなったりするわけです。

今、動作確認しているのは、2/20のr55043というバージョン。
3/5時点での最新バージョンであるr55516だと動かない...
各バージョンのダウンロードは下記↓URLから。
http://nightly.webkit.org/builds/trunk/mac/1

というわけで、自分用メモでした。

2010/03/06(Sat) 03:43:45

 JavaScript始めました / ノリオ 

JavaScriptの勉強を最近始めました。
まだサンプルプログラムを作りつつ覚えている段階なので、そのうち簡単なことができるプログラムを作れるといいなぁ。
2010/03/05(Fri) 01:32:54

 更新再開 / magicien 

2ヶ月ぶりの更新。
論文やら旅行やらで、しばらく放置してましたが、今日から更新再開します。

現状は、WebGLで3Dのウェブアプリを実装中。
去年はObjective-CとOpenGLで3Dアプリを実装してましたが、気が変わってWebGLへ。
WebGLの方が一段落したら、またObjective-Cに戻りたいと思ってます。


2010/03/04(Thu) 16:17:08

 GPL解説vol.8―定義集― / マルパチ 

前回の記事プロパゲート(propagate)という謎の言葉が飛び出してきました。またGPLv3第11条3パラグラフを読んでみた人はコントリビューター(contributor)や必須特許クレーム(essential patent claims)といったわけのわからない用語に悩まされたかも知れません。
今回はそういった用語の「定義」に関する記事です。

法典(会社法など)や法律文書(ライセンスなど)には一定のフレーズが繰り返し記述されることがあります。しかし同じ文書の中にいちいち同じフレーズを繰り返して書くのはかったるいです。
そこで法律家は定義規定を設けて記述の繰り返しを避けるのです。使い方としてはプログラマーが関数の定義をするようなものだとイメージしていただければ結構です。
法律文書を読んでいて訳のわからない用語が出てきたときは、まず定義規定の存在を疑ってください。定義規定は文書・条項の最初の方に記述するのが暗黙の了解になっています。

上記の「プロパゲート(propagate)」や「必須特許クレーム(essential patent claims)」もGPL(General Public License)の中に定義規定があります。これらの用語はGPLのあちらこちらに顔を見せます。特に「プロパゲート(propagate)」や「コンベイ(conbey)」は頻出です。
どうせいずれ解説することになるでしょうから、この機会に翻訳して簡単な説明もしてしまうことにしました。その都度リンクを貼るので今は無理に読まなくてもかまいません。

「改変(modify)」→GPLv3第0条4パラグラフ
著作物を「改変する」とは、著作物の全体又は一部の複製又は翻案を著作権許諾を必要とする方法ですることを意味する。但し正確な複製を作成することを除く。結果として生じた著作物は先行著作物の「改変されたバージョン(modified version)」、又は、先行著作物に「基づく(based on)」著作物と呼ばれる。
※わかりづらい書き方ですが要は、一部の複製、全体の翻案、一部の翻案の3つが「改変(modify)」である、と言っているのです。全体の複製は「改変」ではなく「プロパゲート」になります。そして「改変されたバージョン(modified version)」と「基づく(based on)」という言葉にも「改変」と同様の意味があると言っています。

「プロパゲート(propagate)」→GPLv3第0条6パラグラフ
著作物を「プロパゲートする」とは、許可を得ずにすることによって、準拠する著作権法に基づく侵害行為による法的責任を直接的又は間接的に発生させる行為を意味する。但し、コンピュータ上での実行、又は、私的複製の改変をのぞく。プロパゲートは複製、配布(改変の有無を問わない)、そして一般公開を含む。さらにある国では他の行為もプロパゲートに含まれる。
※「準拠する著作権法」というのがわからないかと思われます。これはどういう訳かというとつまり、著作権法というのは国や州の数だけあるわけであります。ですからその時その時で適用される著作権法を参照してください、という意味です。GPLはどこの国の人に使われるかわかりませんからね。ちなみにどの著作権法が適用されるのかというのは国際私法の問題であり、本稿では解説しません。

「コンベイ(convey)」→GPLv3第0条7パラグラフ
著作物を「コンベイする」とは、プロパゲートの内、相手方に複製の作成又は受領を可能にさせるものを意味する。コンピューターネットワークを介したほんの意思疎通に過ぎず、複製の受け渡しを伴わない場合は、コンベイではない。

「コントリビューター(contributor)」→GPLv3第11条1パラグラフ
「コントリビューター」は著作権保持者でありこのライセンス(GPL)に基づきプログラム又はプログラムに「基づく(based on)」著作物の使用を許可する者である。このように使用を許可された著作物をコントリビューターの「コントリビューターバージョン(contributor version)」という。

「必須特許クレーム(essential patent claims)」→GPLv3第11条2パラグラフ
コントリビューターの「必須特許クレーム」とは、コントリビューターによって保有又は支配(control)される全ての特許クレームであり、このライセンス(GPL)で許諾されている行為(コントリビューターバージョンの作成・使用・販売)により侵害されうるものである。既に取得されているか以後取得されるかを問わない。但し、コントリビューターバージョンのさらなる改変の結果としてのみ侵害されうるクレームは含まない。この定義において、「支配(control)」にはこのライセンスの要件に合致した方法で特許再実施権を付与する権利を含む。
※いきなり「特許クレーム」とかいわれても困るでしょうが、とりあえず今は特許権のことなんだと思って読んでください。真面目に説明しようとすると特許法の話をだらだらとしなければならなくなるので。

予想以上のボリュームになってしまいました。今回の記事は、いま無理に理解しようとしなくても、今後の記事で用語が出てきたときに読み返せばオッケーです。

次回の記事はちょっと間があいて2月11日になりそうです。
それでは!
2010/02/02(Tue) 18:52:28

 GPL解説vol.7―GPLソフトウェアと作成者の特許権― / マルパチ 

今回からGPL(=General Public License)v3第11条の解説に入りたいと思います。

一昨日の記事で解説したように著作権と特許権は別個の権利です。ですからライセンスも著作権と特許権について別々の許諾をする必要があります。
GPLそれ自体は著作権についてのライセンスです。ですから特許を含むGPLライセンスソフトウェアを利用・改変・再配布してよいのかが問題になりうるのです。

そこでGPLv3はGPLライセンスソフトウェアに含まれている特許についての許諾条項を設けています。それがGPLv3第11条(特許)なのです。
GPLv3第11条3パラグラフは、GPLライセンスソフトウェアの著作権者が有する特許であって、GPLライセンスソフトウェアの利用・改変・再配布により侵害される特許につき、特許の製造・利用・販売・販売申込・インポート(実行・改変プロパゲート)を、非独占的かつ無償にて許諾するとしています。
(ここで「GPLv3第11条3パラグラフを勝手にかみ砕くな!」とツッコミが入りそうですが、大体こんな意味である、ということでご容赦ください。本稿の目的はGPLをわかりやすく解説することにあるので。実際のGPLv3第11条はもっと複雑です。)

ただしここでもう一つの問題が発生します。
GPLv3第11条3パラグラフの許諾する特許が、GPLライセンスソフトウェアの著作権者が有する特許に限られているということです。ちなみになぜ著作権者の有する特許しか許諾しないのかというと、他人の特許を勝手に許諾することが不可能だからです。許諾しないと言うより許諾できないのです。特許権も著作権と同じように支配権であるというわけです。
話が脱線しましたが、とにもかくにもGPLはGPLライセンスソフトウェアに含まれる全ての特許について許諾しているわけではありません。
すると結局、特許権者から警告書が届く恐怖におびえなければならないのではないか?という疑問が生じるかと思われます。

GPLはその恐怖を少しなりとも和らげるための規定を設けています。GPLv3第11条5パラグラフがそれです。
GPLv3第11条5パラグラフによると、ソースコードが他人の特許許諾に依拠するものであることを知りながら再配布する者は、以下の3つの措置のうちのいずれかを講じなければなりません。
すなわち、①ソースコードを公に利用できるネットワークサーバー等を通じて、GPLの規定に基づいて、無償で、誰でもコピーできるようにする、②自らに当該特許ライセンスの利益を与えないようにする、③GPLの条件に適合する方法で特許ライセンスを下流の受領者にまで拡張すること、のいずれかです。

この規定により、あなたが特許の存在に気づかないという危険はグッと減少します。上記①ないし③のいずれかの措置が施されたGPLライセンスソフトウェアなら特許権の存在に嫌でも気づきますからね。理論的には上流の(元の)著作権者が特許権侵害の事実に気がついていないため①ないし③の措置を施していないという危険もあり得るのですが、実際にはちゃんと特許権の存在について認知している場合がほとんどでしょう。ある程度の大きさの企業・団体なら特許権の調査をやりますから。

今回はこの辺で。それでは!
2010/01/30(Sat) 20:21:00