内容に「Pro」を含む
21〜30件目 / 32件
前へ 1 2 3 4 次へ

 OpenGL ES 2.0 プログラミングガイド / magicien 

Open GL ES 2.0 プログラミングガイド ふと思い出してこの本を開いてみたところ、WebGLでのClipPlaneの実現方法が載っていた。

ES 1.1にはあったけど、2.0で無くなった機能をどう実装するか、という話が一通り載っていて、シェーダのプログラムもコピペしてそのまま使えるレベル。
そのうちの一つが、ユーザ定義クリップ面の話。

クリップ面の式を
Ax + By + Cz + D = 0
としたとき、
v_clipPlane = (A, B, C, D)
として次のシェーダを書けばOK。
( (A, B, C)はクリップ面に対する法線、Dは原点(0, 0)とクリップ面との距離になる。
 例えば、Y=0平面をクリップ面としたいなら、v_clipPlane=(0,1,0,0))

頂点シェーダ:
uniform vec4 v_clipPlane;
uniform mat4 matViewProjection;
attribute vec4 rm_Vertex;

varying float v_clipDist;

void main(void)
{
  v_clipDist = dot(rm_Vertex.xyz, u_clipPlane.xyz) + u_clipPlane.w;
  gl_Position = matViewProjection * rm_Vertex;
}

フラグメントシェーダ:
precision mediump float;
varying float v_clipDist;

void main(void)
{
  if(v_clipDist < 0.0)
    discard;

  gl_FragColor = vec4(0.5, 0.5, 1.0, 0.0);
}

頂点(rm_Vertex)毎にクリップ面との距離(v_clipDist)を計算しておく。
v_clipDist が 0 より小さい点はクリップ面の裏側にあることになるため、描画しない(discard)。
もっと難しい計算が必要だと思ったけど、恐ろしく簡単に実装できた。

2012/05/19(Sat) 22:44:29

 QuickTime Player Xの「画面収録」をFinal Cut Pro 7に取り込む / magicien 

Macで画面キャプチャして動画を作成しようと思ったときに毎回分からなくなるのでメモ。

QuickTime Player X で「新規画面収録」を使って画面キャプチャを撮った後、Final Cut Pro に取り込もうとすると、エラーが出て読み込めない。
理由は、下のリンク先によると、「可変フレームレートは取り扱え」ないから、らしい。
http://oshiete.goo.ne.jp/qa/6160886.html

解決方法は、QuickTime Proで固定フレームレートに変換すれば良いらしいけど、QuickTime Player Xにそんな機能は無い、気がする。あるいは、画質を犠牲にすれば、他のフォーマットに変えてしまうことで固定フレームレートになるかもしれない。

ただ、Final Cut Pro 7をインストールすると、QuickTime Player 7が勝手にPro化されるみたいなので、「QuickTime7」で検索して、アップルのサイトからQuickTime Player 7をダウンロード。
すると、特に何もしなくても、QuickTime Player 7がPro版になっている。すばらしい!

あとは、上のリンク先に書いてある通りに動画を変換する。

[ファイル]-[書き出す]を選択。
「書き出し」項目は「ムービーからQuickTimeムービー」とします。
[オプション]ボタンをクリック。
「ビデオ」項目内の[設定]ボタンをクリック。
圧縮の種類を「Apple Intermediate Codec」に、フレームレートを29.27に変更。
圧縮プログラムは「その他」のままでOK。
「ビデオ」項目内の[サイズ]ボタンをクリック。
「現在のサイズ」として保存してする。

で、Final Cut Proで読み込めるファイルの出来上がり。

Final Cut Pro Xを入れると、QuickTime Player X がPro版になるんだろうか...。
まぁ、バージョンアップに追従していけるほどリッチじゃないです、はい。

2012/02/06(Mon) 00:10:07

 Final Cut Proでニコニコ動画用エンコード / magicien 

再エンコード地獄でした。
なんとか通ったけど、なんで通ったのかはよくわからず。
自分用にうまくいったエンコード設定をメモ。

  • 「ファイル」→「書き出し」→「QuickTime変換を使う...」を選択
  • 形式に「MPEG-4」を選択。
  • 形式の右側の「オプション」ボタンでオプション設定へ。
  • ファイルフォーマット:「MP4」
  • ビデオタグ
    • ビデオフォーマット:「H.264」
    • データレート:「480」キロビット/秒
    • 最適化:「ストリーミング」
    • イメージサイズ:「カスタム」、幅:「512」×高さ「384」
    • 指定のアスペクト比を保持:チェックOFF
    • フレームレート:「30」
    • キーフレーム:「等間隔に設定:24フレーム」
    • 「ビデオ・オプション」ボタンを押して詳細へ
      • プロファイルの制限:「メイン」、「ベースライン」を選択
      • エンコーディングモード:「最高品質(複数回実行)」
  • オーディオタグ
    • オーディオフォーマット:「AAC-LC(ミュージック)」
    • データレート:「128 kbps」
    • チャンネル:「ステレオ」
    • 出力のサンプルレート:「48.000 kHz」
    • エンコードの品質:「高品質」
  • ストリーミングタグ
    • ストリーミングを使用:チェックOFF

2010/10/17(Sun) 01:57:54

 clearDepthの最大値 / magicien 

xファイルのテクスチャ読み込みと法線生成は完成。

大きなモデルを読み込んだせいで、モデルの表示が途中で切れてしまうため、
clearDepth(depth)の値を大きくしてみたところ、全く変化なし。
depthRange(near, far)のfarの値を大きくしてもだめ。
で、getParameter(DEPTH_CLEAR_VALUE)、getParameter(DEPTH_RANGE)で調べたところ、
depthの最大値は1っぽいことが判明。
depthは固定小数点数なのかも...
ということは、奥の方まで表示させるためには、全体のスケールを落とさないとだめ?

と思ったけど、そもそもカメラのprojection matrixで奥行きの上限を設定してた (というか、clearDepthが1であることを前提にした行列の計算をしてた...)ので、
その奥行きを変更すれば大丈夫でした。

2010/10/11(Mon) 04:06:18

 1級小型船舶操縦士 / magicien 

結果報告が遅くなりましたが、無事に1級小型船舶操縦士の肩書きを手に入れました!

諸事情により、今はFinal Cut Proをいじっているところですが、
WebGLの方もノリオの協力のおかげで少しずつ進んでいます。
9月になればWebGLの方をいじれるはず...

2010/08/31(Tue) 00:54:10

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

久しぶりの投稿になってしまいました。マルパチです。

さてmagicienからWebGLの動作環境の導入法について書いてくれと頼まれました。
ところが私のマシンではChromium(Chromeの開発版)でWebGLが起動できず、WebKit(Safariの開発版)に至ってはそもそもアプリケーションが起動しません(爆)

しかしMinefield(FireFoxの開発版)は問題なくWebGLの起動に成功したので、とりあえずMinefieldのインストール方法についてのみ書くことにします。
ChromiumとWebKitについては導入に成功し次第、追記することにします。


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


下記URLからWin用のパッケージ(firefox-3.7a4pre.en-US.win32.installer.exe)をダウンロードします。 http://ftp.mozilla.org/pub/mozilla.org/firefox/nightly/latest-trunk/

WebGLを動作させるためにMesa software OpenGLが必要になるので以下のURLからダウンロードします。
http://people.mozilla.com/~vladimir/webgl/webgl-mesa-751.zip
ダウンロードした「webgl-mesa-751.zip」を解凍すると中に「osmesa32.dll」が入っています。
Cドライブにtempフォルダを作成し、osmesa32.dllをフォルダの中にコピーしてください。

ここでようやくMinefieldを起動します。
Minefieldのアイコンをダブルクリックして起動してください
URL入力欄に「about:config」と入力します。
すると、警告画面が表示されるので、「I'll be careful, I promise!」というボタンをクリック。
設定一覧がダーッと表示されるので、Filterにwebglと入力して「webgl.enabled_for_all_sites」を探してください。
「webgl.enabled_for_all_sites」を選び、ダブルクリックします。
webgl.enabled_for_all_sitesのValueが「true」に変更されるはずです。
次に同じ設定一覧の中から「webgl.osmesalib」を選び、ダブルクリックします。
「enter string value」というウィンドウが出てくるので、「C:\temp\osmesa32.dll」と入力して先ほどのosmesa32.dllを指定してください。

設定は以上で完了です。
これで、MinefieldでWebGLが動作するようになります。


ていうかMacの方が簡単そうですね。普及率はWindowsの方が高いのに。
以下のサンプルURLへ行き、自転する地球が表示されれば導入成功です。
http://webos-goodies.googlecode.com/svn/trunk/blog/articles/getting_started_with_webgl/webgl_sample.html

2010/03/28(Sun) 11:00:31

 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

 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.6―GPLの新しいバージョン― / マルパチ 

前回の記事でGPL(General Public License)の古いバージョンの取り扱いについて解説しました。GPLにバージョンがあるということは、今後GPLの新しいバージョンであるバージョン4がリリースされる可能性が高いということです。
前回の記事を読んだmagicienから「新しいバージョンの取り扱い」について質問があったので、今回はこれをテーマにしたいと思います。

GPLv2(=GPLバージョン2)に改訂版に関する第9条があるように、GPLの現行バージョンであるGPLv3(=GPLバージョン3)にも改訂版に関する14条があります。そしてGPLv3第14条2パラグラフは前回説明したGPLv2第9条2パラグラフと同様の規定です。
つまりあなたが自らの開発したソフトウェアに対しGPLバージョン3又は後発の全てのバージョン(="or any later version")によるライセンスをした場合、あなたからソフトを受け取った人にはGPLバージョン4に従うことを選択する権利が発生してしまうのです。

「わざわざ著作権告知に"or any later version"なんて文言を入れやしないよ」と思うかも知れませんが、落とし穴があります。
GPL作成者であるフリーソフトウェア財団(=FSF)はGPLを利用するソフトウェア開発者に対して著作権告知のテンプレートを用意しています。このテンプレートにはしっかりと書いてあるのです。"or any later version"の文言が。
深く考えずにこれをコピペすると、あなたのソフトウェアに「いつの間にかGPLバージョン4が適用されていた」という事態が発生します。

このような事態は回避したいという方も多いでしょう。
あなたが開発したソフトウェアなら、FSFの著作権告知のテンプレートから"or any later version"の文言を削除してバージョン3のみに従うよう指定することで、GPLバージョン4の適用を排除できます。
しかし他人が開発したソフトウェアの著作権告知に既に"or any later version"の文言が入ってしまっている場合、改変者・再配布者であるあなたは"or any later version"の文言を削除することができません。なぜなら第3回及び第4回にて解説したように、あなたには「適切な著作権告知(appropriate copyright notice)」を保持するという条件が課されているからです(GPLv3第4条1パラグラフ及びGPLv3第5条1パラグラフ)。すると「いつの間にかGPLバージョン4が適用されていた」という事態が発生しうるわけですね。

ソフトウェアに適用されるGPLのバージョンが自分では決められない、ということを不安に思われるかも知れません。未だにリリースされていないライセンス文書がソフトウェアに適用されるかもしれないというのは、非常にリスキーです。なぜならライセンス文書がどのような内容になるかわからない以上、あなたに不利益をもたらす条項が挿入されないとも言い切れないからです。
でもGPLに限って言えばそのような法的リスクはありません。仮にGPLバージョン4にあなたの不利益となる条項が追加され、かつ、ソフトウェアにGPLバージョン4が適用されることになったとしてもあなたが困ることは無いでしょう。

そのように言える理由はGPLv3第14条4パラグラフにあります。その翻訳は以下の通りです。
「後発のライセンスバージョンはあなたに追加的許諾、又は、異なった許諾を与えるかも知れない。しかしながら、あなたが後発のバージョンに従うことを選択した結果として、全ての作成者又は著作権者に対して追加的義務が課されることはない。」
このパラグラフが何を言いたいのかというとつまり、GPLバージョン4がGPLバージョン3と比べて作成者・改変者の不利益となる条項を含むものであった場合に、利用者がGPLバージョン4に従うことを選択したとしても、作成者・改変者の不利益となる部分についてのみGPLバージョン4の適用が排除されるということです。
この条項により、GPLのバージョンアップに伴う法的リスクを打ち消しているというわけですね。

そんなわけでGPLのバージョンアップをおそれる必要はありません。あなたが開発したソフトウェアの著作権告示から"or any later version"の文言を削除する必要性も薄いと言えるでしょう。

次回のテーマについてちょっと迷っているんですが、いま「ソフトウェア特許」が熱そうなんでGPLv3第11条(特許)について解説して「ソフトウェア特許」への足がかりにしようかな。
それでは!!
2010/01/24(Sun) 18:35:24

 GPL解説vol.4―フリーソフトウェアとコピーレフトその2― / マルパチ 

前回「GPL(=General Public License)ライセンスソフトウェアを使うと何ができて何ができないのか」の続きです。
「改変されたフリーソフトウェア」の再配布の条件について説明したいと思います。

「改変されたフリーソフトウェア」は6つの条件を守れば、ソースコード形式でのみ再配布できます。再配布は必ずソースコード形式で行わなければなりません。オブジェクトコード形式での再配布の際はさらに条件が付け加えられるので注意してください。

6つの条件とは①適切な著作権告知を全てのコピーに目立つように発行すること、②GPLのコピーを全ての受取人に提供すること、③改変したという事実及び改変の日付をはっきりと告知すること、④GPLが適用される旨・GPLv3第7条に基づく全ての条項が適用される旨をはっきりと告知すること、⑤改変されたソフトウェアの全体に丸ごとGPLを適用させること、⑥あなたの改変によりソフトウェアインタラクティブユーザーインターフェイスを追加された場合は適切な法的告知を表示すること。→GPLv第5条1パラグラフ
①「適切な著作権告知(appropriate copyright notice)」は前回説明したとおり。フリーソフトウェアの元々の著作権告知を変更するなという意味です。
④の条件は前回説明した②の条件に似ていますが違うものです。どこが違うかというとGPLv3第7条に基づく「全ての」条件を告知しなければならない点が違います。非許可条項の告知だけで良しとされた「フリーソフトウェアの完全なコピー」とは大違いです。
⑤は6つの条件の中で一番大事な条件と言っても過言ではありません。この条件によりGPLはAからA'へ、A'からA''へと伝播していくのです。(ライセンス感染とか皮肉られる原因でもあったり…)
⑥の「適切な法的告知(Appropriate Legal Notices)」ってなんやねん、という問題があります。これについてはGPL自身が「適切な法的告知」の定義づけをしてくれています(GPLv3第0条8パラグラフ)。GPLによると「適切な法的告知」とは、まず適切な著作権告知(apprpriate copyright notice)の表示があること、そして利用者に対して3点につき伝えること(無保証である場合には無保証であること、受領者がGPLに基づきプログラムの再配布が出来ること、GPLのコピーを参照する方法)なのだそうです。適切な著作権告知って①の条件とほぼ同じですね。ファイルとディスプレイで2重に著作権告知をしろということです。

さて前回から2回にわたって長々と解説してきましたがいかがでしたでしょうか?
タイトルにも書いたコピーレフトについてはついにここまで触れずじまいでした(笑)

コピーレフトとは、本来なら非著作権者による著作物の利用を制限するために用いる著作権法を、逆に非著作権者による著作物の自由な利用・再配布・改変のために用いてしまおうという逆転の発想です。つまり最初の著作権者が、自分の著作権を盾にして、全ての再配布者に対してフリーソフトウェア化を要求してしまうのです。
この発想はプログラマーの方にとっては既に当たり前の考え方なのかもしれませんが、僕みたいに法律の考え方に馴染んだ人間にはやっぱり違和感があります。著作権法などの私法ってのは普通、自分の利益のために使うものであって、他人の利益や公共の利益のために使うものではありませんからね…。

次回は「古いバージョンのGPL」について説明しようかと思いましたがこれは後回しにして、ここらでちょっと「BSDライセンス」について書くことにします。
それでは!
2010/01/15(Fri) 23:18:29