中国出張の思い出


2007 年のクリスマス真っ只中に中国の瀋陽に出張に行きました。下の写真は泊まったシェラトンホテルの光景です。ちょうどクリスマスだったのでホテル内もクリスマスっぽい飾り付けがされていました。写真はお菓子で作った街(?)です。

シェラトンホテル

シェラトンホテル

高級ホテルっぽかったので、ホテル内はとても快適でした。ただ、ホテル以外はいろいろと驚きの連続でした。

ちなみに仕事は教育中の大学生の中間試験と答え合わせ、および面接でした。

中国南方航空の恐怖

行きの飛行機の話ですが、まー、揺れた揺れた。あんなに揺れる飛行機に乗ったのは初めてでした。当然、機内食は落ち着いて食べられないし(全部食べたけど)、「もしかしたらたどり着けないかもしれないなぁ」と思ったものです。

その一方まわりの人は平然としてるっぽいので、このルートはいつも気流が乱れるのかなとも思っていました。が、別便で向かっていた親会社の中国の方は「死ぬかと思いました…」と言っていたので、乱気流を避けるのが面倒くさかっただけなんじゃないかと今でも考えています。

極寒の瀋陽で元気に遊ぶ若者

冬の瀋陽は寒い寒いと聞いていたので、ユニクロでヒートテック一式(シャツ、靴下、モモヒキなど)を買っていきました。で、下にはそれを着て、冬服を着てその上にはさらにコート、マフラー、手袋、マスクなどを着込んだのにも関わらずそれでも寒い!

当然ながら雪もあるし、路面は凍っているので歩くのもけっこう注意が必要です。が、そんな中でもバスケに興じている学生たちに驚愕。しかも T シャツ(だったかどうかは記憶が怪しいが、少なくとも厚着はしていない)で。これにはちょっと勝てないと思ってしまいました。

パンチのない味

食事時には大学内の食堂に行きました。中華料理といえば脂っこくて味も濃いみたいなイメージがあるので、そんな料理や味を考えていたのですがぜんぜんそんなことはありませんでした。

それというのも現地のアテンダントがイスラム教徒だったらしく(実は中国には意外とイスラム教徒が多いらしい)、イスラム教徒でも大丈夫な食事を出してくれる食堂だったためです。料理自体に肉が入ってないのはもちろんですが、ダシにも使えないため味にパンチがないこと!

そうはいっても他の食堂に行くというわけにもいかず、主にその食事を堪能することになりました。…脂っこい食事は苦手なんですが、何だか食べた気がしなかった覚えがあります。

てんこ盛り

出張中は主に大学内にいたのですが、外気温が低いので室内でもけっこう寒く、どうしてもトイレが近くなってしまいます。で、トイレに行ってふと個室に目をやると信じられない光景が!便器にはうずたかく積もった○ンコが!しかも、すべての個室に!日本でも災害時にはこういったことになるとは聞いていましたが、ここでは毎日でした。

日本に帰って中国生活が長かった方にどうするのか聞いたところ、「あぁ、頂上を避けてするんですよ」とのこと…。

あの光景を見た時に「○ンコ盛り」というしょうもない言葉が頭に浮かびました。

PDF にパスワードや制限をかける pdfcrypt の使い方


PDF ファイルにパスワードをかけたり、各種制限をかけたりすることが出来る便利なツールに “pdfcrypt” というものがあって先日久しぶりに使う機会があったのですが、使い方を忘れていました。

ヘルプを見ても知りたいことは出てきませんでした。インターネットで検索したところ、昔は日本語の情報にもすぐにたどり着いたのですが、今回はすぐに見つかりませんでした。幸いにも “pdfcrypt.cfg” というファイルで知りたい情報にはアクセスできました。

せっかくなので備忘録がてら、日本語での解説を書こうと思います。

pdfcrypt は次のようなコマンドです。

pdfcrypt [-K keybit] [-P permission] old.pdf new.pdf

-K は暗号化のキービットを 40 または 128 で指定する事が出来ます。続く permission ではここで 128 を指定しないと有効にならないものがあります。

-P 以降では次の項目に関して許可するかどうかを指定出来ます。

  • 印刷
  • 内容の修正
  • コピー
  • アノテーションの修正
  • フォームフィールドの入力と署名(128 bit のみ)
  • スクリーンリーダー(128 bit のみ)
  • アセンブリ(128 bit のみ)
  • 低品質印刷(128 bit のみ)

これを 0 または 1 で左から順に指定をします。( 0 が無効で 1 が有効)
例えば印刷とコピーの許可を与える場合は 10100000 となります。

また、コマンドを実行するとパスワードの入力を求められますが、何も入力しなければパスワード無しで閲覧出来るようになります。上記の許可のみの指定をしたい場合はパスワードを設定しないようにしましょう。

ポリゴンのプリミティブタイプの違いと使いどころ


OpenGL などの描画 API を使ってポリゴンを描画する時にプリミティブタイプを選択することになります。一般的には下図に示したようなプリミティブから選択することになります。左から「トライアングルリスト(triangle list)」、「トライアングルストリップ(triangle strip)」、「トライアングルファン(triangle fan)」です。

一番直感的なのはトライアングルリストだと思います。トライアングルストリップ、トライアングルファンに至ってはわざわざ選択する必要があるのかどうかもすぐには感じられません。とはいえ、描画手段が用意されているのですから何かしら使いどころはあるはずです。一体、それぞれの使いどころはどのようなところなのでしょうか?



トライアングルリスト

トライアングルリストはとにかく直感的で扱いやすいところが特徴です。その反面、「ポリゴン数 x 3」(x Byte 数)というその他のプリミティブに比べるとデータ量が多くなってしまうことが難点です。

トライアングルストリップ

トライアングルストリップは最初のポリゴンは3頂点分のデータが必要ですが、その後は1頂点分のデータ量で1ポリゴンを描画し続けることが出来ます。トライアングルリストと比べるとポリゴン数が増えれば増えるほど経済的に有利になります。また、同じポリゴン数であればトライアングルリストよりも描画効率が良くなります。そのため可能であればトライアングルストリップとして描画すると良いでしょう。

しかし、マテリアルなどの関係上どうしてもつなげられないポリゴンも出来てしまいます。そうした場合は、

  • 複数のトライアングルリストとしてまとめて描画する
  • 三角形一つのトライアングルストリップとして一つずつ描画する

とすることになります。

トライアングルファン

一番使いどころがなさそうなトライアングルファンですが、次のような場合には有用です。

  • 多角形ポリゴンを三角形ポリゴンに分割する
  • 三角形ポリゴンをある矩形領域に収まるように分割する

まずは「多角形ポリゴンを三角形ポリゴンに分割する」場合を考えてみます。なぜモデルデータにポリゴンを使うのかでも書きましたが、一般的には三角形ポリゴンでないと描画が出来ません。しかし、モデルデータとして多角形のデータが含まれている場合は三角形に分割して描画 API に渡すことになります。その際はトライアングルファンとして描画すれば、トライアングルリストなどで描画するよりも簡単に出来ます。

次に「三角形ポリゴンをある矩形領域に収まるように分割する」場合を考えます。下図の様な矩形領域にポリゴンを収めたいとします。ポリゴンと矩形の各辺との交点を結ぶと三角形から多角形になります。ここからは先ほどと同じでこの多角形を三角形に分割し、トライアングルファンとすれば良いです。

このようにプリミティブタイプには複数の種類が存在しますが、それぞれの特性を理解して場合によって使い分けると、効率的に処理することが出来ます。