mieki256's diary



2023/12/31() [n年前の日記]

#1 [prog] glpngをMinGWでビルドできるか試してみた

OpenGLを利用する際に、テクスチャ画像を読み込むためのライブラリが必要になるけれど、昔は glpng というライブラリがあって、ソレを使うと png画像を読み込めた、という話を見かけたので気になってきた。

_glpng

Windows10 x64 22H2 + MiNGW (gcc 6.3.0)で、その glpng を利用できないか試してみた。

ソースの入手 :

glpng のソースは、まだかろうじて、以下から入手できる模様。昔は他の場所でも配布されていたらしいのだけど…。

_森北出版株式会社刊 「Springs of C」サポートwebページ
_ Stunt Course (WebArchive)
_Index of /pub/OpenBSD/distfiles/glpng-1.45/

glpng.zip を入手して解凍。中に入ってた html を見る限り、バージョンは 1.45 (2000/07/10)らしい。2000年頃のライブラリなのか…。たしかに古い…。

ビルド :

src/ の中に入って、Makefile.LINUX を使ってビルドするのだけど、その前に、.c や .h の改行コードを統一しておいたほうがいいのかもしれない。

MinGW には dos2unix という、改行コードを CRLF から LF に変換するツールがパッケージとして用意されているので、それをインストールして、各フォルダで以下を実行したほうがいいのかも。
dos2unix *.c
dos2unix *.h

make でビルド。
make -f Makefile.LINUX

../lib/ の中に、libglpng.a が作られる。これを MinGW で使える。

必要なのは以下のファイルだろうか。これらを、MinGW インストールフォルダの、include/ や lib/ にコピーする。
GL/glpng.h
libglpng.a

サンプルプログラムをビルド :

Example/ の中にはサンプル Test.c があるので、ビルドして .exe が作れるか試してみた。ビルドには、glut か freeglut が必要。

ただ、Test.c は若干修正が必要らしい。diff の結果を貼っておく。
> diff -u Test.c.orig Test.c
--- Test.c.orig 2023-12-31 01:53:10 +0900
+++ Test.c      2023-12-31 02:17:00 +0900
@@ -6,8 +6,8 @@
  * http://www.wyatt100.freeserve.co.uk/download.htm
  */

-#include <gl/glpng.h>
-#include <gl/glut.h>
+#include <GL/glut.h>
+#include <GL/glpng.h>
 #include <stdlib.h>

 int angle = 0;
@@ -64,10 +64,11 @@

 /***** Main function *****/

-void main() {
+int main(int argc, char** argv) {
        pngInfo info;
        GLuint  texture;

+       glutInit(&argc, argv);
        glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGB);
        glutInitWindowSize(300, 300);
        glutCreateWindow("glpng test");
@@ -107,4 +108,6 @@
        glutReshapeFunc(Reshape);

        glutMainLoop();
+
+       return EXIT_SUCCESS;
 }

行頭に「-」がついているのが元の記述。「+」がついているのが変更後の記述。
  • 「gl/」は「GL/」に変更。
  • glpng.h, glut.h の順ではなく、glut.h, glpng.h の順で include。
  • void main() は int main(int argc, char** argv) に。
  • glutInit(&argc, argv); を追加。
  • main() の最後で返り値を戻すようにする。

一応、修正後の test.c も置いておく。

_test.c
_stunt.png


Makefile は以下。

_Makefile
Test.exe: Test.c Makefile
    gcc Test.c -o Test.exe -lglpng -DFREEGLUT_STATIC -lfreeglut_static -lglu32 -lopengl32 -lwinmm -lgdi32

.PHONY: clean
clean:
    rm -f *.exe
    rm -f *.o
-lglpng のほうが、glut 関係より先に記述されてないといかんらしい。

make を実行。Test.exe が作られた。

Test.exe を実行すると、png画像の Stunt.png を読み込んで、OpenGL のポリゴンにテクスチャとして貼り付けた状態で表示された。

ss_glpng_test.png

たしかに、png画像を読み込んで、OpenGL のテクスチャとして利用できた。

libpng を使う事例と比べると、圧倒的に記述が少なくて済む。もっとも、glpng も実際の処理は zlib と libpng を使ってるらしいけど…。

glpng [Ben Wyatt] (Win32, etc.) - all versions; read-only;

requires libpng and zlib; freeware (zlib license) with source.

(This is a utility library to load PNG images and bind them to OpenGL textures.
Reportedly it is also a good general-purpose example of how to use textures in OpenGL.
As of early 2000, it still includes the source code for libpng 1.0.2 and zlib 1.1.3, plus a static Win32 library [glpng.lib].)

PNG-supporting Libraries and Toolkits より

参考ページ :

#2 [nitijyou] 弟が帰省

夕方の犬の散歩から帰ってきたら到着してた。たぶん 16:30頃に着いてたのかな…。

#3 [nitijyou] 日記をアップロード

2023/12/04を最後に日記をアップロードしてなかったのでアップロード。

2022/12/31() [n年前の日記]

#1 [nitijyou] 年賀状を出してきました

なんとか年賀状を作れたので出してきました。毎回年が明けてから送る状態だったけど、今回はどうにか年内に作れた…。いや、本来は25日までに出さないとアレなんだけど…。

blenderを使って画像は作れたものの、レイアウトしてみたらなんだかストイック過ぎて…。もうちょっとどうにかできんかとフォント内の絵文字を並べて少しアクセントをつけてみたけれど、まだ何か足りない感じが…。

LibreOffice Writer でレイアウトをしてみたけれど、背景にグラデーションを設定しても印刷時にフチなしで印刷できなくて、用紙の端に印刷されない領域ができてしまう。これはプリンタドライバ側で設定するものなのだろうか…。まあ、用紙の端にスペースがあるほうが今回はありがたいので、このまま印刷することにした。

#2 [nitijyou] 弟が帰省

16:30頃出発して、18:30頃に到着。PCパーツやHDMI切替器を持ってきてくれた。ありがたや。

2021/12/31(金) [n年前の日記]

#1 [nitijyou] 年賀状を作成中

年賀状用の画像データを作成中。

#2 [nitijyou] 弟が帰省

去年の年末はコロナウイルスの流行が激しかったので弟が帰省できなかったのだけど、今年の年末はちょっとコロナが落ち着いてきたのではないか、ということで弟が帰省。PM03:00頃に出発してPM05:00頃に到着したそうで。

2020/12/31(木) [n年前の日記]

#1 [pc] プリンタがそろそろヤバイ

年賀状を印刷しようとしているけれど、手持ちのインクジェットプリンタ Canon iP4600 の紙送りの具合がよろしくなくて。年賀はがきを数枚入れると、2枚目で確実に紙送りで失敗して用紙詰まりのエラーを出す…。詰まると言っても、入り口か排出口ではがきが止まるだけなので引っ張れば取り除けるけど、連続で印刷できないのは間違いなくて。そろそろ寿命かな…。

アレコレやってるうちに、コツが分かってきた。はがきを入れずに印刷指示だけ出しておいて、プリンタが用紙切れを訴えてきたら復旧ボタン?を押しつつ、すかさずはがきを押し入れると飲み込んでくれる。ってそんな面倒なことをしてまで無理矢理使わなくても…。

前面トレイから送り込む、普通の厚さのA4用紙なら連続で飲み込んで印刷してくれるのだけど、厚さのある用紙を担当する後部トレイが…。

2019/12/31(火) [n年前の日記]

#1 [gimp] GIMPの全レイヤーを画像保存するスクリプトについてメモ

GIMPの全レイヤーを、それぞれ別の画像ファイルとして保存する方法についてメモ。基本的には、Python-Fu (GIMP-Python)、もしくは Script-Fu のスクリプトを追加すればできるようになります。

動作確認環境は Windows10 x64 1909 + GIMP 2.10.14 Portable x86 samj版。

Export Layers プラグイン。 :

今時は Python-Fu で実装された高機能なプラグインが存在するので、まずはそちらをおススメ。

_Home | Export Layers
_khalim19/gimp-plugin-export-layers: GIMP plug-in that exports layers as separate images

  • レイヤー名をファイル名に、あるいは、連番ファイル名にして保存できる。
  • 保存する前に、各レイヤーがどんなファイル名で保存されるのか、一覧表示してくれる。

呼び出し方は、ファイル → Export Layers ...。

gimp_export_layers_ss01.png

実行すると、どの場所に保存するか尋ねてくるダイアログが開くので…。

Settings をクリックして Show More Settings を選べば、オプション指定部分が増えます。

gimp_export_layers_ss02.png

ファイル名の部分をクリックすれば、レイヤー名で保存(Layer name)、連番で保存(image001)、等が選べます。

gimp_export_layers_ss03.png

たむぶん版 Continuous Save。 :

いっちー氏が作成した Script-Fu に機能追加された版。GIMP 2.10.x まで対応済み。レイヤーを連番画像(bmp/png/jpg)として保存することが可能。

_たむぶん版 Continuous Save

continuous-save_scm_ss01.png

何らかの理由で Export Layers を使いたくない・動かない場合は、こちらのスクリプトがおススメ。

導入すると、Script-Fu → Utils → Continuous Save...、で使えるようになります。

mieki256版 Continuous Save。 :

前述のプラグイン/スクリプトで十分目的は果たせるし、自分も最近は Export Layers を使っていますが…。

一応、自分も、いっちー氏 + たむぶん氏が作成した版に多少手を入れたスクリプトを手元に置いていたりするので、念のためにソレも置いておきます。GIMP 2.8、GIMP 2.10 に対応。GIMP 2.6 には未対応。

_continuous-save_m256.scm

continuous-save_m256_scm_ss01.png

導入すると、Script-Fu → Utils → Continuous Save (m256)...、で使えるようになります。

ですが、たむぶんさんの版より機能が少ない(レイヤーサイズを一括変更する機能が無い)ので、コレを使うメリットは無いですね…。

余談。全レイヤーのサイズを一括変更。 :

手元の環境で使っている、全レイヤーのサイズを一括変更するスクリプトも、一応紹介。

_all-layers-resize-autocrop_gimp28.scm

レイヤー → All Layers、の中に、以下の2つが追加されます。
  • 全レイヤーの自動切り抜き
  • 全レイヤーを画像サイズに合わせる

当時、GIMP 2.6、2.8 に対応させたはずですが、手元の環境では GIMP 2.10 上でも動いてます。

#2 [gimp] GIMP 2.10のソリッドノイズ

GIMP 2.10.14 Portable x86 samj版でソリッドノイズフィルタを使おうとしたら、フィルタメニューの中に見当たらず。下塗り → 雲、の中にあったような気がするのだけど…。

下塗り → ノイズ → ソリッドノイズ、という場所にあったのだな。一応メモ。

GIMP 2.8.22 Portable を起動してみたら、そちらでは、下塗り → 雲、の中にソリッドノイズがあった。記憶が間違ってたわけではないらしい。GIMP 2.10 になって、下塗り → ノイズ、というサブメニューが追加されて、登録場所が変わったのだろう。たぶん。

#3 [gimp] Script-FuでGIMPのバージョンを調べる

GIMP 2.8 からレイヤーグループが追加されたことで、Script-Fu を使ってレイヤー関係の処理を書く際には、以下を意識して書いてあったりすると助かる場面もあるのだけれど。

そのためには、「GIMP 2.8以上か? 未満か?」を、Script-Fu を使って判定しないといけない。そのあたりの処理をどう書けばいいのか実験してみたり。

動作確認環境は以下。

GIMP 2.10.14上で動作確認。 :

以下は、GIMP 2.10.14 Portable x86 samj版で、Script-fuコンソールを表示して確認した結果。
; GIMPのバージョンは (gimp-version) で取得できる

> (gimp-version)
("2.10.15")

; 配列(リスト?)の中にバージョン文字列が入ってるので、文字列だけを取り出す
; car を使うと、配列の一番最初の要素を取り出せる

> (car (gimp-version))
"2.10.15"

; 文字列を特定文字で区切って配列にする。strbreakup が使える
; (strbreakup 文字列 区切り文字) の形で使う

> (strbreakup (car (gimp-version)) ".")
("2" "10" "15")

; 文字列が入ってる配列の中から1つだけ取り出すには nth を使う
; (nth インデックス番号 配列) の形で使う

> (nth 0 (strbreakup (car (gimp-version)) "."))
"2"
> (nth 1 (strbreakup (car (gimp-version)) "."))
"10"
> (nth 2 (strbreakup (car (gimp-version)) "."))
"15"

; 文字列を数値に変換するには string->number を使う
; (string->number 文字列) の形で使う

> (string->number (nth 1 (strbreakup (car (gimp-version)) ".")))
10

; 2.8 以上か未満かを知りたいので値を比較。#t か #f が返ってくる。

> (<= 8 (string->number (nth 1 (strbreakup (car (gimp-version)) "."))))
#t

GIMP 2.8 以上なので、#t が返ってきた。

GIMP 2.8.22上で動作確認。 :

以下は、GIMP 2.8.22 Portable で確認した結果。
> (gimp-version)
("2.8.22")

> (car (gimp-version))
"2.8.22"

> (strbreakup (car (gimp-version)) ".")
("2" "8" "22")

> (nth 0 (strbreakup (car (gimp-version)) "."))
"2"

> (nth 1 (strbreakup (car (gimp-version)) "."))
"8"

> (nth 2 (strbreakup (car (gimp-version)) "."))
"22"

> (string->number (nth 1 (strbreakup (car (gimp-version)) ".")))
8

> (<= 8 (string->number (nth 1 (strbreakup (car (gimp-version)) "."))))
#t

GIMP 2.8 以上なので、#t が返ってきた。

GIMP 2.6.12上で動作確認。 :

以下は、GIMP 2.6.12 で確認した結果。
> (gimp-version)
("2.6.12")

> (car (gimp-version))
"2.6.12"

> (strbreakup (car (gimp-version)) ".")
("2" "6" "12")

> (nth 0 (strbreakup (car (gimp-version)) "."))
"2"

> (nth 1 (strbreakup (car (gimp-version)) "."))
"6"

> (nth 2 (strbreakup (car (gimp-version)) "."))
"12"

> (string->number (nth 1 (strbreakup (car (gimp-version)) ".")))
6

> (<= 8 (string->number (nth 1 (strbreakup (car (gimp-version)) "."))))
#f

GIMP 2.8 未満なので、#f が返ってきた。

ということで、2.6以下なら #f が、2.8以上なら #t が返ってくることが確認できた。

そもそもこういう処理は要らないかも。 :

今時 GIMP 2.6 以前を使ってる人がそれほど居るとも思えないし、このあたりの処理は要らないのかもしれない…。「このスクリプトは GIMP 2.8以降のみ対応」「GIMP 2.6以前には未対応」等の注意書きでも示しておけば済みそうだし。

でもまあ、一つのスクリプトで、GIMP 2.10 と GIMP 2.8 の両方に対応させたい場面があるかもしれないし。そんな場面では、こういうソレが使えなくもないのかな…。

ただ、将来的に、GIMP 3.0 等のバージョン番号が出てきちゃった時には困るかもしれない。

substringを使う方法。 :

比較に使う文字列が決め打ちになるけれど、文字列の切り出しを行う substring でやれなくもないなと。一応メモ。

> (gimp-version)
("2.10.15")

> (car (gimp-version))
"2.10.15"

> (substring (car (gimp-version)) 0 4)
"2.10"

> (string=? "2.10" (substring (car (gimp-version)) 0 4))
#t
> (string=? "2.8." (substring (car (gimp-version)) 0 4))
#f
> (string=? "2.6." (substring (car (gimp-version)) 0 4))
#f

> (gimp-version)
("2.8.22")

> (string=? "2.10" (substring (car (gimp-version)) 0 4))
#f
> (string=? "2.8." (substring (car (gimp-version)) 0 4))
#t
> (string=? "2.6." (substring (car (gimp-version)) 0 4))
#f

> (gimp-version)
("2.6.12")

> (string=? "2.10" (substring (car (gimp-version)) 0 4))
#f
> (string=? "2.8." (substring (car (gimp-version)) 0 4))
#f
> (string=? "2.6." (substring (car (gimp-version)) 0 4))
#t

参考ページ。 :

#4 [nitijyou] 弟が帰省

PM06:00過ぎ頃に到着。

高速道路は混雑していなかったけど、車体が持っていかれそうなぐらいに風が強かった、との話。

2018/12/31(月) [n年前の日記]

#1 [nitijyou] ドンキホーテとやらを見てきた

近所でドンキホーテなるお店が開店したらしいので見てきたり。

自転車の駐輪場が無いな…。気が利かない…。

駐車場はほぼ満杯で、店内も混雑していた。親子連れが目立った気がする。

色んな商品が置いてある店なのだな…。なんとなく、ホームセンター+ドラッグストアな感じ。ゲーミングマウスまでいくつか置いてあったのは驚いた。

ただ、火事になったら大変なことになりそうな予感がする店内のレイアウトだった気もする。通路幅等が十分に確保できてない上にどこが出口か分からない配置になっていて、いざという時に客が逃げられないのではあるまいか…。

#2 [nitijyou] 弟が帰省

16:45頃到着。

弟が寝泊まりできるように、午前中に部屋を掃除しておいた。

#3 [pc] 手持ちのタブレットPCがベタベタになってた

手持ちのタブレットPC、DELL Latitude 10 の、ガラス面と本体のラバー部分の間から接着剤のようなものがにじみ出ていてベタベタする状態になってた。ショック。

弟曰く、シールはがしで取れないか、との話で。ダイソーで買ったシールはがしが部屋にあったので、綿棒に染み込ませて拭いてみたら多少は取れてきたけれど、それでもまだベタベタする…。

ちなみに、シールはがしにも種類があって、オレンジから抽出した系のソレはプラスチックを溶かすのでこういう場面で使ったらマズイらしい…。

2017/12/31() [n年前の日記]

#1 [ubuntu] キューブ機を少しセットアップ

Intel Atom N270 が載ってるキューブ機を少しだけセットアップ。

NICドライバを入れ替え。 :

_2014/04/02の日記 に手順をメモしてあったので、同じような感じで作業。

#2 [nitijyou] 部屋を掃除

弟が帰省するので、午前中に部屋を掃除。

#3 [nitijyou] 弟が帰省

夕方頃に到着。

色々なPCパーツを持ってきてくれた。とりあえず親父さんが使ってた MITSUBISHI製24インチ液晶ディスプレイを、弟が持ってきてくれた DELL製25インチ液晶ディスプレイと交換。DisplayPortとやらで接続するらしいけど…。幸い、親父さんPCのM/BにはDisplayPortがついていた。助かった。今回弟が持ってきた液晶ディスプレイは、2560x1440の解像度だそうで、親父さんがウチで一番スペックの高いディスプレイを使っていることに。

2016/12/31() [n年前の日記]

#1 [anime] 「Occultic;Nine」最終回を視聴

BS11で放送されてた「Occultic;Nine」なるアニメの最終回を視聴。内容は…オカルトアニメ? ミステリーアニメ? なのかな。どうなんだろう。

さておき。面白かった…。最終回は怒涛の展開というか。「Nine」ってそこにもかけてあったのか。やられた。うむ。これは面白い。面白いと思います。

登場人物の喋りがとにかく速いので最初は面食らうかもしれないけど、その分密度が濃い目なので、数話見てるうちに慣れてきてそこからは面白く感じるんじゃないかなと。これは早見再生できないアニメだな、標準速でちょうどいい、などと思いながら視聴してました。

一応話が終わったように見えつつも、あちこちの謎は説明されておらず、何より主人公についてのアレコレがソレだったりするわけで。放送直後に「ゲーム版を出す予定だよ!」とCMが流れていたので、おそらくゲーム版を買えば謎は解けるし、主人公のアレコレも判明するんだろうと。

しばらく前にBS11で、再放送(?)の形で流れてた「STEINS;GATE」がまさにそういう形で。「どうしてこうなったかは続編ゲームを買えば分かるよ!」というラストになってたけど。そちらは最初の放送時にトゥルーエンド相当を流してしまっていたらしいので、自分のような初見組はガックリきてしまって。しかも再放送版のラストが、「えー。そのラストは…どうなの…」てなラストで。

しかし今回は、最初に放送されたアニメ版からして「今回はここまで」になってるから不公平感は無いし、なるほどそういうラストもアリだよな、でもトゥルーエンドがありそうだな、てなラストだったのでOKではないかと思えたり。手口(?)というか構成として上手くなってる、ような気が。

「なんだよ所詮販促アニメかよ」「『あのね』商法かよ」と思ってしまうような内容・ラストではない印象も受けたし、「ここまででも十分面白い」と思うも良し、「続きが気になる。ゲーム版を買おう」と思うも良し。バランスが取れてるというか、これなら良い塩梅じゃないのかなと。

#2 [anime] 「劇場版ウルトラマンX」を視聴

TVで流れてたので見てみたり。

ググってみたら、TV版の最終回から半年後の設定、らしい。冒頭でTV版のダイジェストを見せているので、TV版を未見の人でも楽しめる作りになっていた気がする。

TV版もそういう設定だったけど、科特隊員達とスマホ(?)を通じて会話するウルトラマン…。いいな。これはアリだなあ。ウルトラマンは地球人の味方、てなイメージがどうせもうすっかり定着しちゃってるので、だったらいつでもフツーに会話させたほうが面白くなるよなと。

逆に、何を考えてるのか分からないウルトラマン、というのもアリなのかも。そもそも宇宙人だし。地球人とは異なる思考ロジックを持ってるほうがリアルさを醸し出せそう。でもまあ、ソレをウルトラマンでやる必要は無いか…。でもないか。平成ライダーと同じで、「ウルトラマンでソレをやるの?」と思われたほうが驚きがあるのかもしれない。と思ったけどそんな異質なウルトラマンでは今まで登場したウルトラマンと共闘させたりできなくなるか…。

と思ったけど、この映画もちょっとノリが違うウルトラマンがワラワラと出てきてバタバタと戦っていて。このあたり、意外とどうとでもなるもんだなと…。

さておき、特撮シーンは結構頑張ってる印象で。劇場版は予算が多いのだろうか…。

全体的には、フツーに面白かった、かなと。ああ、ウルトラマンだね、ウルトラマンXってこんなノリだった、みたいな。とんでもなく面白いわけでもないけれど、親御さんと子供さんが一緒に見てたらフツーに楽しめそうな感じの作品というか。悪くないのではないかと。

ただ、個人的にはもうちょっと笑いがあったほうが、とも思ったり。劇場で子供さんがドッと笑うイメージは湧かなくて。もっとも実際にはウケてたりしたのだろうか。どうなんだろう。

「おそ松さん」のように放送作家さんの力を借りる、みたいなことは難しいのかなあ…。

#3 [anime] 女性向けアニメは見なくていい (※ おじさんは)

思考メモ。

今まで、「女性向けアニメにも名作があったりするんじゃなかろうか」「もし見逃してしまったらもったいない」とある種の期待を寄せて、一応はTV放送されてる女性向けアニメのアレコレを眺めていたのだけど。

某アニメの実写特番を眺めて、「プロジェクト内容についての説明が全然足りてねえ…」「いきなり、『皆さん御存知の通り』と言われてもこっちは知らねえよ…説明を省くなよ…」等の不満を感じているうちに、遅まきながら今頃になって「あー、そうか」と気がついて。ようやく何か悟ったような気分になってきたり。いやまあ、「見る前に気づけよ」ぐらいのたわいない話なんだけど。

女性向けアニメは最初から見なくていいのだなと。切っていい。 *1 見る価値無し。 *2 断言してもいい。名作なんて無い。 *3

と言うのも。

どの女性向けアニメも、漫画原作を読んでファンになってる人、原作ゲームをプレイしてファンになってる人、そういう層を対象にして作られているので、アニメを通じて初めてそのタイトルに触れた人に対する気配りがほとんどないわけで。「せめてこの設定は踏まえておいて」とか、「演じてる中の人達はこういう人達ですよ。今後ともよろしく」とか、「こういう内容のプロジェクトなんですよ」とか、視聴するにあたって必要になりそうな前知識の説明すらまずしてくれない。アニメを使って新規層を呼び込むことを最初から想定していない、というか諦めてる気配があって。

一見さんお断り。それが女性向けアニメなのだなと。色々眺めてみたけれど、どうやらそういうジャンルらしいと。

もちろん、新規層の確保を綺麗サッパリ諦めた分、元からファンだった人達が喜びそうな内容で満ち溢れていて。だからそのやり方で全然問題無いというか、むしろそういう作りこそが正解とすら思えるわけで。金を落としてくれるかどうかわからない新規層より、絶対に金を落としくれるファン層を狙い撃ちする。そんなの当たり前のことだし。

でも、それもそれでなんだか寂しい(?)というか…。もうちょっと工夫すれば新規層も取り込めそうなアニメになるんじゃないのか、そのほうがリターンは増えないかとも思ってしまうわけで。こんなに線が多い作画をしてるということは、作るのは間違いなく大変だろうに、わざわざ自分達からパイを限定してしまう方向で舵を切ってもいいのだろうか、みたいな。

とは言え…。あらゆる層を意識して作ってみたら誰が見ても中途半端な出来になってさっぱり売れませんでした、てな展開はありがちだし。世の中には「二兎を追う者は一兎をも得ず」という言葉もあるわけで。それよりも一点集中的に狙いを定めて特定層にだけは百発百中でガツンとウケる出来にしたほうが全然マシだよなとも思えるわけで。

このあたり、女性向けアニメに限った話ではなく。例えば、1stから続くガンダムシリーズは男性向けアニメに分類されるだろうけど、アレだってもはや途中参加なんてほとんど不可能だろうと。ガンダムUCなんてあんなに線が多いのに、新規層の取り込みなんておそらく少しも意識してない。うたプリを見てる層にガンダムUCを見せても設定すら分からないから拷問としか思われないだろうけど逆もまた然り。ガンダムUCを見てる層がうたプリを見てもやはり拷問だろう。

つまり男性向けアニメも女性向けアニメと変わらない。既存作を熟知していて様々な知識を既に持っている人達を対象に、濃度の高い商品を打ち出して商売を成立させるという流れが男女関係なく存在していると言えるのだろうなと。

大体にして、老若男女、幅広い層にウケるアニメが見たかったら、ピクサーやディズニーのアニメでも好きなだけ見てればいいわけで…。日本のアニメにそんな万能振りを期待してどうするのだ…。日本のアニメは、リターンが小さ過ぎてピクサーやディズニーが狙ってこない、そういう隙間を狙って作られてるのだから、そこから外れた層にはウケなくて当然。

というかそもそも、おじさんが女性向けアニメを見て「これは面白い」と思えるわけがない。「女性向け」アニメなんだから。下手すると、おじさんが「面白い」と思った時点で女性向けアニメとしては大失敗してる可能性すらある。でも、女性向けアニメを作ってるのはえてしておじさん達で…ちと話がややこしい。

とかなんとかどうでもいいことをもやもや考えてしまったけれど、何にせよ、女性向けアニメは最初から切る、と自分の中で覚悟を決める(?)だけでも視聴本数が随分と減らせそうな予感。これからはちょっと気が楽になりそう。

少女漫画と女性向けアニメは別物。 :

少女漫画なら、おじさんが読んでも「これは面白い」「名作だ。紛うことなき名作だ」と思えるものが多々あって。なもんで、極めて安易に「女性向けアニメにも名作があるんじゃないの」と思ってしまって眺めてたわけだけど。

どうも少女漫画と女性向けアニメは種類が違うというか、異質なものだなと思えてきたり。

少女漫画の場合は、一つの大きなストーリーを紡いでいくものが大半で。どんなにつまらない作品でも、ちゃんとお話が用意されてるものが多い。

女性向けアニメは違っていて、男性アイドルのコンサートというか、ライブというか、イベントというか、そういうものを眺めてる感覚に近いのだろうなと。ダンスシーン・歌唱シーンが本編内に必ず挿入されていたりもするし。そして、それらダンスシーン等の合間に、ちょっとした寸劇がお飾りで挿入されている。ストーリーはほとんどあってないようなもの。

例えば、3次元の男性アイドルのコンサート映像をおじさんが見ていても、「よく動くなあ」「こんなダンス、おじさんにはできないよ」「うわあ。あんなに足が高く上がってる」「若い子は凄いねえ」てな印象が関の山。「感心」することはあっても「感動」は無い。同様に、女性向けアニメを見ていても、「よくまあこんな細かい絵を描くなあ」てな具合に感心することはあっても、そこに感動は無い。

でも、おそらくファンは、そのダンス一つを目にしただけでも、何か感動的なストーリーを脳内に思い浮かべてるのではないかと想像したりもして。「最初の頃はあんなに拙い踊りだったのに、よくぞここまで…。きっとツライ練習をずっと繰り返してここまで来たんだね…偉いよ、○○クン。尊いよ」みたいな。あるいは「最初は○○(メディア名)でしか見れなかったのに、今はTVでも映像が流れてる…育ったなあ」みたいな。まあ、そのあたりは男性が女性アイドルの成長を見ている時も似たようなソレがあるわけだけど。

あるいは、動物の求愛ポーズとしてのダンスの動きに魅力を感じてる可能性もありそうだけど。雄鳥が枝の上で羽を広げて交互に振って「パシッ、パシッ」と音を立てながら求愛ダンスをすると、雌鳥が「あら。コイツの遺伝子ってばなんだか良さそうじゃないの?」的に寄ってきたりするけれど、そういう現象に近い可能性も。

もっともこのあたりは男性向けアニメも似たようなもので。というか男性向けアニメはもっと酷い。下着だのおっぱいだの見せとくだけでガッツンガッツン食いついてくるから…。何の技術も要らない。ペロンと見せるだけで寄ってくる。男はね…チョロ過ぎるというか、単純過ぎるというか…。女性向けのアレコレが様々なテクニックを華麗に巧みに駆使しないと訴求力を持てないことに対して、男性向けは「あっ! 今おっぱい見えた!」で全部オッケーになっちゃう。ちょっとね…酷いよね…。時々嫌になる…。

閑話休題。

ダンスシーンや歌唱シーン等、「動き」「音」を含む何かしらは、静止画しか提示できない少女漫画では表現できない。その代わり、少女漫画はストーリー等を提示して商品として成立させている。そして、ストーリーがあると、ある種の普遍性だか汎用性だかを獲得できて、おじさん達が読んでも楽しめるコンテンツになる。

てなことを考えていくと…。女性向けアニメは、少女漫画ではできない表現を積極的にプッシュして、しかしその代償として、ソレ以外を削ぎ落としたジャンル、と言えるのかもしれない。ある意味では純度が高い。そして純度が高くなった分、間口が狭くなるのは、これは仕方ないよねえ、と言えたりするのかも。

と、ここまで書いて思い出したけど、「やおい」ってジャンルがあったなと…。「やおい」も純度が高かったよなあ…。アレは人を選ぶけど、「選ばれし者達」は果てしなくいつまでもソレを堪能できる、みたいなところが…。

まあ、思考メモです。こんなことをぽやぽやと考えてました、とメモ。

*1: 「切る」=「視聴しない」の意。
*2: 「おじさんは」、ですよ。
*3: 男女関係なく誰でも楽しめる方向での「名作」は、という話ですよ。そのジャンル内に限って比べた際の「名作」は、もちろんあるはずで。

#4 [nitijyou] 弟が帰省

PM06:30頃到着。道は混んでなかったとのこと。

2015/12/31(木) [n年前の日記]

#1 [dxruby] キャラグラエディタのパレット部分の処理を変更

自作キャラグラエディタのパレット部分は、EDSCIIに同梱されていたパレット用画像をひとまず読み込んで表示していたのだけど。EDSCIIのライセンスが分からないので、おそらく画像をそのまま流用・同梱して公開しちゃうのはおそらくマズかろうと。なので、GIMP Palette (.gpl) を読み込んで、そこから画像を作成するように修正してみたり。

いくらなんでも、変換して生成した GIMP Palette ファイルに対してライセンスを主張されたりは…しないよな…。まあ、そもそも、パレット用画像もライセンスを主張できるものだろうかという疑問もあるけれど。少なくとも日本国内においては、独創性も美術性も持ってないから著作物として扱われないのではないかと。

2014/12/31(水) [n年前の日記]

#1 [nitijyou] 掃除したり年賀状を描いてたり

弟が帰省するので部屋の掃除を。

年賀状も描いてるところ。結局ダジャレは思いつかず。別の方向でポチポチと。

2013/12/31(火) [n年前の日記]

#1 [dxruby] DXRubyのSpriteを勉強中

Spriteクラスの衝突判定について簡単なサンプルを書きながら勉強中。とりあえず、Sprite.check(攻撃側Spriteの配列、守備側Spriteの配列) を呼べば、Spriteを継承したクラスの、shot()、hit() が呼ばれるらしいと分かったり。その中に、当たった時の処理を書けばどうにかなるらしい。

スプライトの基準座標が左上座標に固定されてるあたりがしっくりこなかったのだけど。DXRuby開発版なら、self.offset_sync = true を設定してやることで、画像の拡大縮小回転の中心位置を基準座標として扱えることを今頃知ったり。コレ、正式公開版に反映されたら嬉しいのだけど…。とりあえず、DXRuby 1.4.0 に該当機能は無いので、手元のサンプルでは基準座標+オフセット値を表示座標としてわざわざ設定したり。…そういや、開発版のソレって、アタリ範囲はどうなるんだろう。

さらにDXRuby開発版には、Sprite#flush(色配列) で、フラッシュ画像を生成できるメソッドも追加されていて。先日、自前でフラッシュさせようとしてたソレを、メソッド一発でできるようになるのはありがたいなと。コレも、正式公開版に反映されたら以下略。

とりあえず以下のような感じに。

_sprite_test2.rb
# スプライトの衝突判定動作テスト

require 'dxruby'

font = Font.new(12)

# 画像読み込み
base64_text = ""
DATA.each {|l| base64_text += l.chomp}
bin_data = base64_text.unpack('m')[0]
$imgs = Image.loadFromFileInMemory(bin_data).sliceTiles(8, 1)

# enemyshotimgs = [$imgs[3], $imgs[4], $imgs[5]]

# 度→ラジアン変換
def deg2rad(deg)
  return deg * Math::PI / 180.0
end

# ----------------------------------------
# プレイヤーキャラ
class Player < Sprite
  attr_accessor :bx, :by, :shottimer, :hit_timer, :flush_image

  # 初期化処理
  def initialize(x, y)
    super
    self.bx = x
    self.by = y
    self.image = $imgs[1]
    self.flush_image = $imgs[7]
    self.shottimer = 0
    self.collision = [16, 16, 4] # アタリ範囲を設定
    self.hit_timer = 0

    # self.offset_sync = true # DXRuby開発版でのみ使えるプロパティ
  end

  def update
    w, h = self.image.width, self.image.height

    # マウスカーソル座標を自機座標にする
    self.bx = Input.mousePosX
    self.by = Input.mousePosY

    xmin, ymin = 0, 0
    xmax, ymax = Window.width, Window.height
    self.bx = xmin if self.bx < xmin
    self.by = ymin if self.by < ymin
    self.bx = xmax if self.bx > xmax
    self.by = ymax if self.by > ymax

    if self.shottimer % 10 == 0
      # 自機ショットを発射
      [270, 30, 150].each do |i|
        spr = Shot.new(self.bx, self.by, 16, i + self.bx / 4)
        $shots.push(spr)
      end
    end

    self.shottimer += 1
    self.angle += 8

    if self.hit_timer > 0
      self.hit_timer -= 1
      self.hit_timer = 0 if self.hit_timer <= 0
    else
      self.hit_timer = 0
    end

    # 基準座標+オフセット値を表示座標とする。
    # DXRuby開発版なら、self.offset_sync = true で済んでしまうのだけど、
    # 開発版は Ruby 1.8 や 1.9 に対応してないので…
    self.x = self.bx - w / 2
    self.y = self.by - h / 2
  end

  # 雑魚敵と当たった時に呼ばれる処理
  def hit(o)
    self.hit_timer = 4
  end

  def draw
    super
    if self.hit_timer > 0
      Window.drawScale(self.x, self.y, self.flush_image, 3, 3)
    end
  end
end

# ----------------------------------------
# プレイヤーの弾
class Shot < Sprite
  attr_accessor :bx, :by, :dx, :dy

  def initialize(x, y, spd, angle)
    self.bx = x
    self.by = y
    self.image = $imgs[0]
    self.dx = spd * Math.cos(deg2rad(angle))
    self.dy = spd * Math.sin(deg2rad(angle))
    self.angle = angle
    self.collision = [0, 13, 31, 18]
    self.collision_enable = true
    self.collision_sync = true
  end

  def update
    w, h = self.image.width, self.image.height
    self.bx += self.dx
    self.by += self.dy

    # 画面外に出たら自分を消滅させる
    xmin = - w / 2
    ymin = - h / 2
    xmax = Window.width + w / 2
    ymax = Window.height + h / 2
    if self.x < xmin or self.x > xmax or self.y < ymin or self.y > ymax
      self.vanish
    end

    self.x = self.bx - w / 2
    self.y = self.by - h / 2
  end

  # 敵に当たった場合に呼ばれるメソッド
  def shot(d)
    self.vanish # 自分を消滅させる
  end
end

# ----------------------------------------
# 雑魚敵
class Enemy < Sprite
  attr_accessor :bx, :by, :dir, :dx, :dy
  attr_accessor :hit_timer, :spd, :org_image, :flush_image

  def initialize(spd)
    self.org_image = $imgs[2]
    self.image = self.org_image
    self.flush_image =  $imgs[3]

    # DXRuby開発版でのみ利用可能。フラッシュ画像を作れる
    # self.flush_image = self.org_image.flush(C_WHITE)

    self.spd = spd
    self.collision = [0, 0, 31, 31]
    self.init
  end

  # 発生時の初期化処理
  def init
    self.bx = rand(Window.width)
    self.by = rand(Window.height)
    self.collision_enable = false
    self.collision_sync = false
    self.hit_timer = 0
    self.alpha = 0
  end

  # 更新処理
  def update
    w, h = self.image.width, self.image.height

    if self.alpha < 255
      # 出現中
      self.collision_enable = false
      self.alpha += 5
      if self.alpha >= 255
        self.alpha = 255

        # プレイヤーを狙った速度を決める
        ply = $players[0]
        self.dir = Math.atan2(ply.by - self.by, ply.bx - self.bx)
        self.dx = spd * Math.cos(self.dir)
        self.dy = spd * Math.sin(self.dir)
      end
    else
      # 移動中

      if self.hit_timer > 0
        # 弾が当たっているなら一定時間フラッシュさせる
        self.hit_timer -= 1
        self.collision_enable = false

        # フラッシュ時間が終わったら再発生
        self.init if self.hit_timer <= 0
      else
        # 弾は当たってない
        self.hit_timer = 0
        self.collision_enable = true

        # 移動
        self.bx += self.dx
        self.by += self.dy

        # 画面外に出たら再発生
        xmin = - w / 2
        ymin = - h / 2
        xmax = Window.width + w / 2
        ymax = Window.height + h / 2
        if self.x < xmin or self.x > xmax or self.y < ymin or self.y > ymax
          self.init
        end
      end
    end

    self.image = (self.hit_timer <= 0)? self.org_image : self.flush_image

    self.x = self.bx - w / 2
    self.y = self.by - h / 2
  end

  # プレイヤーの弾と当たった時に呼ばれるメソッド
  def hit(o)
    self.hit_timer = 4
  end

  # プレイヤーと当たった時に呼ばれるメソッド
  def shot(d)
  end
end

# ----------------------------------------
# メイン

# Input.mouseEnable = false # マウスカーソル非表示

srand(0)
$players = []
$shots = []
$enemys = []
$players.push(Player.new(0, 0))
8.times {|i| $enemys.push(Enemy.new(2))}

in_pause = false

Window.loop do
  break if Input.keyPush?(K_ESCAPE)

  update_enable = false
  if in_pause
    # ポーズ中

    # Nキー押しで1フレーム進める
    update_enable = true if Input.keyPush?(K_N)

    # Pキーを押したらポーズ解除
    in_pause = false if Input.keyPush?(K_P)
  else
    # 通常処理
    in_pause = true if Input.keyPush?(K_P) # Pキーを押したらポーズ
    update_enable = true unless in_pause
  end

  if update_enable
    # プレイヤーの弾と雑魚敵の衝突判定
    Sprite.check($shots, $enemys)

    # 雑魚敵とプレイヤーの衝突判定
    Sprite.check($enemys, $players)

    Sprite.update($players)
    Sprite.update($shots)
    Sprite.update($enemys)

    Sprite.clean($shots)
    Sprite.clean($enemys)
  end

  Sprite.draw($enemys)
  Sprite.draw($players)
  Sprite.draw($shots)

  l = $players.length + $shots.length + $enemys.length
  Window.drawFont(0, 0, "Sprs: " + ('■' * l), font)
  Window.drawFont(0, 16, "PAUSE", font) if in_pause == 0
end

__END__
iVBORw0KGgoAAAANSUhEUgAAAQAAAAAgCAMAAADKd1bWAAAAwFBMVEV/AACg
AADAAADgAAD/HBz/cHD/qKj/xMT/4OAAwAAMdwBN/03/////Ziv/hk3/p3D/
x5OROADaLAAwMDBgYGCUlJSwsLDg4ODExMT///+goKSyAKwAAAAAAAAAAAAA
AAD/////ior/KyubAAD/////u4n/mSuacwDLy8vvdi7EUgCJBgD/Kyv/biv/
dCv/uSsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAACCWjOjAAAAHHRSTlP/////////////////////////////////
//8AF7Li1wAAA0tJREFUeJzlmd2SokAMhbVquNhdB91tcKW4USj1wkLe/+02
P40ESDN2iyNbnuJiTKYczjdJaLoXuYfSdAdK005wJ6UEMinMDwLfpsJKxhY+
X2ASIJAmRsa20q4xg0CW9QwPAt8ksv4J6jLwAoAIuvbB7zZtRQC6gZkAYPcV
iRnYhBcArQXArzE6AIjPBQDZv8anGHSKr4SAM4+3AADYOQDs5gIA/V/jeL0+
gtbrGBA0BN6iBfDfD/aPG/64OQICLAL88HAL5InpKukEBoZf478C+zIECCom
8HAL5H/FyG/UhmYAAOu/558IcBdMMQOaajdmScKfXC0wTgCnc1m6bwBn+OXi
zteg87kX1Pw3BCYEQPY/UIwgAECzTnEhqKxc+dqqm6f5N/APBGgSegGA/say
Towk0AJYfkQoQhACoCgOh8MIgaqC/AiBuob8kAAVgPb7XAIeAND/T1CXgAVA
/rOsT8ADAPrfjxBA//sRAuh/rxBwFIAtga8BpIYvQ/5/gIgAGMzpagFE6IcJ
BAGA+99bAioAm3cCsPkeACqAjeZsQyWgA9iw8PbShC8Q+P8FQgKgNKdrawc/
FUCnBFj3AoAC2KNcJQAFwHlHCUABcL5XAkVRndQOgB44VQoAXC+B2D/c344W
dLjWI/+rFRHAj4auvAVgW6AD4O7HYCErQAfQVoAOoK0ACQDWAGoHYA/AWmDx
m/QHhG9KnzGJCPAdwtCjCwQAViAEQMOQLv6u2wgUAOTfGvVuAYgZoAIQM0AF
IGbAqwFEYQBuTwHwrwG4PQUqJV/X7VOgLj0A9KPeLWAXgbAGuPnPIgSgbYi4
KZSFkGLwUgkp+XMt9AgAks8QbAA0BKABomUD4P4h+DQAvkOwr/sfgx+s0HVA
Oeof8qP+Ia/6D3wMqvpqIcQEoP55MewNoBT+NYOl8K/mhf8JF0I9AmNLYUYQ
LZdhS+GSEZS6P8o39l35xv5zlsJ3vAw1CnsZKm/S/3xYfsKXIX0/QO5/tK/D
YRsiY/aC809+HX6rDRHHrrDcAhSbIQEbIs/RdFtib78p6toWn/25wFTb4q6D
kdmfC0x1MPK/tkA+1dGY2gLdU4FBYCYApjkcVQ9Gev4HgYHd1/hHacfj/wAC
/D82nEMmSwAAAABJRU5ErkJggg==

実行結果。
実行結果


オブジェクトについて、画面外に消えるたびに破棄したり、一定時間毎に生成してるあたりが、ちょっと気になる…。オブジェクトの生成と破棄って時間がかかるらしいから、最初に使う分を確保して、それを使い回したほうがいいのかなと…。

このあたり、双方向リストで管理すれば、実行するオブジェクトと、実行せずに溜めておく空きオブジェクトを、即座に登録・解除できるのだけど…。実は DXRuby の内部でソレに近いことをやってたりしないのかな、という疑問も。タスクマネージャでプロセスを見ていても、メモリ使用量が増えているようには見えないし…。

この記事へのツッコミ

Re: DXRubyのSpriteを勉強中 by takaranotou    2017/07/10 17:17
getyerdrgkhuykhim;

2012/12/31(月) [n年前の日記]

#1 [game][neta] チャーハンつくるよアプリってどうだろう

スマホの加速度センサを利用して、チャーハンを作るアプリってどうだろうかと。いや、Wiiでそういうのが既にありそうな気もするけど。 そんな感じで。

上手に御飯をクルリとやれたかの判定が難しそうな気も。加速度センサのどのへんの値をどう読み取れば判定できるのだろうか。もしかすると加速度センサって、読み取り速度が結構鈍かったりしないのかなと。

ちなみに、家庭用コンロは中華料理屋さんのアイテムに比べると火力が弱く、プロみたいにチャーハンをクルッとやるとたちまち温度が下がってベタッとした仕上がりになるのだそうで。まだ、フライパンにヘラで御飯をぎゅっと押し付け続けるほうがマシなのだとか。 つまり、家庭用コンロでチャーハンをクルッとやってる人は、気分や雰囲気だけ優先してわざわざマズイ飯を作ってる人、なのかもしれない。

「それでもやっぱりプロっぽくクルリとやりたい」…そんな人にはこのアプリを。みたいな宣伝もできたりするのだろうか。ちょっと無理あるか…。

Androidの加速度センサについて検索してみたり。 :

_センサを使ってAndroid端末の傾きを知る << Tech Booster で、センサの読み取り速度は変えられると知った。ゲーム向けとかUI向けとかあるのか…。

_Androidのセンサーで気をつけるべきこと - crimsonwoodsのブログ で気になる話が。
きっと取れると思います。取れるはずなんです。本当なら。でも実はうまくいかないことがよくあります。で、よくよく調べてみると、Android端末のいくつかでは指定したセンサータイプと、getDefaultSensorで実際に取得できるセンサーの物理的な種類が一致していないことがわかりました。
そりゃうまく動かないわけですよ。だって加速度センサの値が欲しいのに実際には磁気センサを取得してたりするんですから。

Androidのセンサーで気をつけるべきこと - crimsonwoodsのブログ より

マジですか…。先日DLした某アプリ上でその手のセンサがさっぱり動かなくて変だなと思ったけれど、たぶんそういう状態になってたのだな…。

#2 [nitijyou] 弟が帰省

録画用PCのパーツが浮いたとのことで、色々持ってきてくれた。ありがたや。

#3 [pc] 弟が持ってきてくれたPCパーツについてメモ

一応ココにもメモしておかないとパーツの型番を絶対に忘れそうなのでメモ。 弟が PT3 を入手して、結果今まで使ってた PT1 が浮いたそうで。「PT1、使ってみるか?」「モチ!」という流れで使わせてもらえることに。PT1 は、デジタルTV放送をPCでキャプチャするボード。一般的なPC用チューナーとは、性質がちょっと違う。デジタル放送に切り替わる過程で、世間一般のTV放送受信機器は様々な不便さまで一緒に導入されてしまったのだけど、そこらへんをどうにかできるのかもしれないらしく…でもまあ、おそらく一般人にはどうでもいいパーツです。

M/B型番で調べていたら、そもそも自分が親父さんPC用に購入したM/Bと全く同じ型番だった。すっかり忘れてた…。

以前入手した中古のMicroATXケースから、MSI K8MM-V、WinFast A6200TDH、ATX電源を取り出して、今回のパーツを収めることにした。ATX電源は、部屋に転がってた、サイズ 鎌力弐 550Wを使用。

組み立て作業はほとんど弟にやってもらった。まあ、自分がやっても弟がやっても、結果は同じだし…。

SSDは2.5インチなので、固定できる何かしらを自分は持ってなくて。とりあえず養生テープでケースの底に貼り付けたけど、固定用のちゃんとしたパーツを入手しないといかんなと。

SSDの中にWindows7をセットアップした状態で持ってきてくれたそうで、電源投入したらフツーにOSが起動した。SSDの動作速度を目で見るのは初めてなのだけど。あっという間に起動して、たしかにこれは凄いなと。まあ、耐久性が心配だけど…。

PT1 の動作確認は明日行う予定。アンテナ線とB-CASカードを使わないといかんけど、それぞれ RD-BZ710 から外してしまうと予約録画が全滅してしまうので…。

2011/12/31() [n年前の日記]

#1 [nitijyou] 部屋を掃除

弟が明日帰省する予定なので、布団をひく領域を確保。

SONY製SVHS+8mmビデオデッキが邪魔だ…。SVHS側は故障していて・テープを巻き込んでしまうので使えない。弟から貰った8mmビデオテープが段ボール一箱分あるけれど、見る時間があるかと考えるとまず見ない気もする。デッキもテープも捨てるべきかな…。修理しようにも、もう誰も直せないだろうし。なんだか、カウボーイビバップのビデオデッキ回を思い出す。あそこまで未来になってないのに、もう似たような状況になっている。

ダンボール箱PCも捨てるかどうかで悩んでたり。CPUがAMD Sempron。もう使わんだろうという気がする。HDDに対して何か作業をしたい場合は、旧メインPCにリムーバブルケースをつけてあるからそれを利用して作業すればいいだろうし。やっぱり捨てるか…。

今からでは捨てようがないので、ひとまず部屋に転がしておいて、年が明けたら捨てよう…。

#2 [zatta][neta] 最近「中二病」という言葉が褒め言葉になりつつあるような気がする

元々は伊集院光が作った言葉で、少年期の特徴を分類認知、場面によっては自虐的に用いてギャグにする形で使われていた、と聞いている。本当にそうだったかどうかは知らない。それを誰かが、自分ではなく、他者を否定するための罵倒語として利用し始めてしまい、そちらのほうが普及してしまった。しかし、普及し過ぎると否定的な意味合いが弱まるのかもしれない。どうも最近は、「中二病だ。だが、それがいい」等、現象・状況を肯定する意味合いで使われる場面がチラホラ見えている。…元々はそういう使い方をしてた言葉のような気もするので、グルッと一回りした、ということかもしれないが。

ひょっとすると、「バカ」「クレイジー」などと同じ言葉に変質したのかもしれない。否定の言葉のようでありながら、褒め言葉としても使われる。そんな言葉の仲間入りを果たしたのではあるまいか。…誰かこのあたりの展開を考察してくれないものか。

何にせよ、否定的意味合いばかりで件の言葉を使い続けていると、時代の流れについていけない遅れてる人に思われてしまいそう。怖い。空気を読んで・TPOで使い方を変えていかないと。

「空気」と言えば、そのうち「KY」も肯定的意味合いで使われる場面が増えていくのだろうか? ちょっと想像できないけれど。

そういや全然関係ないけど、「老人力」という流行語もあったっけ。アレも、否定肯定が入れ替わったり誤用が普及する現象が見られたと聞いた記憶があるが…。

言葉は変化していくのだな、なんだか面白い、と思った次第。

2010/12/31(金) [n年前の日記]

#1 [movie] 亡国のイージスを鑑賞

深夜、TVで流れていたので一応鑑賞。

ダイ・ハードに似てるなと思ったけれど、日本映画によくある陰々鬱々としたソレが前面に出てきてしまってなんだか色々台無しになった印象。もっともスタッフはどうせ最初からその手の映画なんぞ作るつもりはなかったのだろうから、これで何も問題はないのだろうけど。

イージス艦?の戦闘シーンは庵野コンテだったと後で知り、ちゃんと見ておけばよかったと少し後悔。まあ、コンテをそのまま映像化できたわけではないらしいし、そもそも今回のTV放送版はどう見てもカットされまくりだったから気にしても意味は無いか。

検索して関連情報を眺めたら、制作で色々苦労したらしいと知った。なんだか申し訳ない気分に。や、「うわー苦労してるな」「これは大変だったろうな」と見ている間は全然思えなかったもので。スイマセン。

#2 [anime] サマーウォーズを鑑賞

HDDレコーダに録画してたけど、ずっと見てなかったソレをようやく鑑賞。

デジモン映画の焼き直しなのかなと想像してたけど、ちと違ってた。家族云々の設定・エピソードが加わったあたりで、パワーアップ版になってる印象。とはいえ、あっち側の基本設定や展開は、想像通りデジモンのソレだったわけで。また同じことを繰り返さなくても、という気分にも。が、以前の作品の不満点を直して今度こそ完全版を、てな気持ちも分かるような気もするので、仮にそういう姿勢で作ってたなら、これはこれで。

約1ヶ月前に母方の祖母が亡くなっている状況なので、途中でなんだかモヤモヤした気分になった。

2009/12/31(木) [n年前の日記]

#1 [zatta] SONY製のビデオデッキでVHSビデオテープが再生できなくなっていた

部屋に転がってるVHSテープの中身を確認して要らないようなら捨ててしまおうと思い立ったのだけど。以前弟から貰ってBSアナログチューナ代わりにしている SONY WV-SW1 に入れてみたら、テープが一旦入った後、また出てくる。引っ張ってみてもテープが取り出せない。テープが中に巻き込まれてしまっている…。

仕方ないので、1本は、テープをハサミで切って取りだした。試しにもう1本突っ込んでみるも、やはり巻き込む。そちらのテープはゆっくり引っ張るとテープを取り出せた。

WV-SW1は、8ミリビデオも再生できるS-VHS機。当然ながら、今ではもう店頭で入手できない。修理に出すべきか悩む。少し検索したところ、SONY製のビデオデッキは、いつかは、ローラーの油が切れてテープを巻き込む状態に必ずなるのだとか。であれば、今後修理しても、また同じような状態になるだろう。

VHSテープの中にどんなコンテンツが入っていようと、再生できる機器がないのでは意味がない。そして、今後VHSテープが使われる場面などほとんどないであろう。何が録画されていたのか非常に気になるところではあるけれど、この際、テープも捨てるか…。

2008/12/31(水) [n年前の日記]

#1 [nitijyou] Atomが気になるんだけどなかなか厳しそう

自宅サーバの一時置き変え用にAtomで組んだらヨサゲかなと思ってたけど。検索してみたら、Ubuntu Linux 等のインストールが簡単には行かないらしくて。

なんでも、M/Bに載ってる内蔵のLAN用チップのドライバに問題があって、そのままインストールすると間違った or バグのあるドライバが入ってしまってLANが使えない状態になるらしい。BIOSで内蔵LANを無効にして、別チップを使ってるLANカードをPCIスロットに差してそっちを使えば難なく使えるらしいけど。そのためにはPCIスロットが使えるケースを選択しないといけない。

チップセットを冷却するための4cmファンも問題があるようで。かなり高速回転をさせているために騒音が凄いらしい。静音タイプと交換すると冷却が厳しくなりそうだし。4cmファンと8cmファンの変換アダプタ?をつけるのはどうだろうと思ったけど、4cm→8cmファンの変換アダプタは存在してない模様で。

となると、VIA C7を載せてるファンレスのM/Bがヨサゲかなと言うことになるけど。Atomのソレに比べると値段が倍。しかも性能は、下手するとIntel製CPUの半分よりちょっと上ぐらい。消費電力もAtomと比べてほんのちょっとしか節約できない。

2007/12/31(月) [n年前の日記]

#1 [nitijyou] 立体視関係のサイトを眺めたり

昨今の立体視画像作成というと、ノイズ画面みたいな画像を作るのが主流なのか…。

2006/12/31() [n年前の日記]

#1 [iappli] イベントをユーザが任意に呼べるように仕様変更

画面下部にイベント(?)が使用できるかどうかのアイコンを表示して、カーソルで選択・利用できるように仕様を変更。カーソルの上下移動とも絡むので、頭が混乱してしまった。

カーソルで選択する際、そこだけ異質な選択になるうえに、アイコンが存在すれば必ずそこも順に選ばれてしまうので、ちょっと判りづらいというか、違和感があるような気もする。上下左右+決定キー以外も使えるということにすれば判りづらさはなくなると思うのだけど。今のところ、上下左右+決定キーのみで遊べる簡単操作云々というのを売りにしてる企画のようでもあるので、まあ、こうするしかないかなと。

とりあえずバイナリを相手先に送っておいた。 :

既に正月休みに入ってるような気がしないでもないけど…。とりあえず送っておけばこっちも安心して正月を迎えられるだろうし。みたいな感じで。

#2 [cg_tools] Shade 8 basic + Vue 5 Easel で年賀状用のCGを作成開始

今から作り始めるのです。…とりかかるのが遅すぎる!>自分。スイマセン。

手前のモデルを Shade で。背景を Vue 5 で作成する予定。

CGのネタは、駄洒落を元に。同案多数ネタかもしれないけど、気にせず作ることにする。…歳を取るとどうも駄洒落が面白く感じられてくるような気がするのですが、単に気のせいでしょうか。言語に対する脳の回路が歳とともに変化してくるのかもしれないなぁ。などと根拠のない妄想を。

2005/12/31() [n年前の日記]

#1 [nitijyou] 部屋を掃除

明日、弟が帰省するらしいので。

部屋が無いので、自分と弟で、一つの部屋に寝泊りするのであります。帰省のたびに文句を言われます。「この部屋、寒い」と。隙間風が入るわ、壁は薄いわ、ということでしょうなぁ。

#2 [tv] ライダーヒビキがNHK紅白歌合戦に登場

両親がNHK紅白歌合戦を見ていたので、自分も一緒に見ていたのだけど。布施明の「少年よ」と共に、ライダーヒビキが登場してビックリ。しかもヒビキおじさんの人まで。業界からはジャリ番と呼ばれて蔑まれてる番組の、しかも他局・民放の番組の中から、キャラクターを出してもらえるとは…。NHK、偉い。よくやった。ありがとう、布施氏。ありがとう、ヒビキおじさん。…石ノ森先生、見てますか。貴方の生み出したキャラクターが、NHK紅白に出ていますよ。などと思ったらちょっと目頭が熱くなった。…でも、もしかすると先生は、「俺の描いたライダーとはずいぶん形が違うんだけど…。コレ、ホントにライダー?」と首を捻ってたりするかもしれん。<オイ。

2chスレの反応を眺めていたら。「紅白へのライダー登場は過去に2回あった」との話が。今回が初めてというわけではなかったのか。

他に思ったこと :

  • みのもんたの司会、やっぱり上手いわ。
  • 渡辺美里の歌は安心して聞けるなぁ。
  • ゴリエなるキャラがあんなに踊れるとは知らなかった。見直した。
  • 和田アキ子のタキシード姿は、意外にカッコ良かった。アレは男装キャラとして確立して売り出すべきではないか。

2004/12/31(金) [n年前の日記]

#1 [anime][game] _Re:ネット配信恋愛アドベンチャーゲーム「さくら」アニメ化決定!!

別件で検索してたら目に入った。知らなかった。最近は何でもアニメ化されるのだな。

と本気で納得していたら、どうやらエイプリルフールネタだったらしい。ぎゃふん。目にするのが遅すぎ>自分。とはいえ仮に本当の話であっても、やっぱり不自然さは感じないだろうな。アニメ業界人が作ったゲームがアニメ化されるのは、なんとなくありそうな展開。

_開発を支えた小物ツールたち :

件のゲームの公式サイトを眺めていて、ツールの紹介記事が気になった。
テキストファイルを読み込むと、マウスの左クリック操作回数と想定無介入時間(ただ読むしかない時間)を計算してくれるという、プログラム入門書の第一章に載っていそうな超小型のスクリプトプログラムです。当初はこれでクリック数と、それで表現できる情報量を見ながら、大型イベントを除けば、1イベント 30 クリック 〜 50 クリックあたりに押さえよう……ということを話し合いながら、手探りで作業がスタートしました。
左クリック回数をカウントして、ユーザのプレイ状況をシミュレーションしながら開発してるらしい。最近のADV開発は、そんなところまで気を配って作ってるのか。感心。…そう。この手のゲームをプレイすると、クリックばかりさせられて鬱陶しくなってきてプレイする気を失うわけで。クリック回数の削減は重要事項。かもしれず。 *1

考えてみると、TVや映画等の娯楽コンテンツを視聴する場合、ユーザ自身は何も身体的アクションを起こさないし。漫画や小説でも、読者の身体的アクションは、せいぜいページをめくるぐらい。後は全て、視線移動のみ。それに比べ、ADVだけが特殊な状態で。昔は、「ユーザのアクションに対応したリアクションが返ってくる」=「ゲーム」だったため、ユーザからのアクションを絶えず要求するのも妥当だったのかもしれないけど。ADVのシナリオが他メディアのレベルに近づくのと同時に、ユーザの立場が受動的なものに変化したにも関わらず、やたらと多い左クリック要求だけは誰も気に留めず残ってしまったという。かといって、左クリックを廃し、自動的に画面やメッセージを流してしまったのでは、「だったら映画でも見たほうがいいではないか」という話にもなってしまうし。漫画・小説と同様、各ユーザが自分に合った速度でシナリオを読めるあたり、ADVに残る利点でもあるわけで。しかし過度にユーザからのアクションを要求してしまうと、漫画・小説よりも面倒くささが際立ってしまいよろしくない。…なるほど。最近のADV開発者は、そういうところまでちゃんと考えているのだなと感心した次第。

とはいえ、ADVの場合は、一度に表示できるメッセージ量の問題もあるから色々と難しそう。絵を見せることが主になると、表示できるメッセージ量も少なくなるので、メッセージ送り=クリック回数も多くなる。ならばとクリック回数を少なくすると、メッセージ量を減らさざるをえず、ユーザに与えられる情報量まで少なくなってしまう。うーむ。とか考えてると、最初からADVなんか作らずに、小説書いたり映画作ったりしたほうがいいんじゃないかという気にもなってくる。ADVを他メディアの代用品として考えてると、たぶんどこかで無理が出てくる。何故、ADVなのか。ADVの面白さって何なのか。…何でしょうな。さて。

てなことをぼんやり考えてしまったり。

*1: 他に気になるのは、長すぎるプレイ時間とか。しかしプレイ時間は、ユーザがコンテンツに対して能動的か否かで印象が変わってくるので、単純に数値化して検討できるものでもないし。

#2 [web] ネットサーフィンって昔のADVみたいだなとふと思った

_「マンホール」 とか、そういう感じ。 *1 目の前にある画像の中から、クリックできる部分を探して、クリックすると別の情報を閲覧できて、その情報の中からクリックできそうな部分を探して…それの繰り返し。 *2 作業の様子だけを書き出すと、さほど面白そうには見えない。が、皆ハマってる。何故だろう。そこにはどんな面白さがあるのだろう。 *3

そこにページがあるだけでは、面白くないのだろうな。別の情報とリンクするから面白い。リンクを辿ることで、ユーザ自身が、情報を絶えず発見しているような感覚を味わえる。探索者になれるわけで。そこが面白いのだろうか。…そう考えると、リンクというのは重要なのだな。リンクがなければ、そういう面白さは生まれてこない。たぶん。

リンクと言えばプラネテス原作版も結局はリンクの重要性を語っていたような :

作品中ではリンクすることを、「愛すること」という言葉でまとめてた気もする。リンクしあうものが『人』だったとき、そこに生まれるものを、私たち人間は、愛と呼んでいる。のか? さてはて。

*1: プレイしたことないけど。>「マンホール」。
*2: 「マンホール」って、ハイパーカードで作られたんだっけか。詳しく知らんですが。であれば、似ていて当然なのか。
*3: でも、クリックすることだけが面白い時代は過ぎてるような感もあったり。

#3 [anime] プラネテススペシャルを見た

見てるだけでゾクゾクしてくるなぁ。展開は判ってるのに、脇の下、汗かいてしまった。音楽の入れ方が上手い。堪能させていただきました。

2003/12/31(水) [n年前の日記]

#1 [nitijyou] 部屋を掃除

EPSON GT-5000WINSが邪魔だな。どうしよ。捨てちゃおうか。それも金がかかりそう。新製品を買う際に、前の機材の下取りとかしてくれないものか。値段が値段だから無理か。

#2 [windows] Mozilla Thunderbirdの日付管理について調べてたのだけど

全く情報が見当たりませんな。誰も気にしてないのだろうか。

#3 [ore_xxxxx] スペースオペラAVって作れないかな

今ならCGで宇宙船の登場するシーン等を誰でも安く作れそうな気がする。TVや映画で流れるぐらいに凄いのじゃなくて、X68K時代のチープさが漂うぐらいのレベルのほうが雰囲気的には良さそう。赤いシャツ着て片腕が危険な形をしてるおじさん(通称、こぶさん)や、ドクロのシャツ着て眼帯してミルクがどうこう口走るおじさん(通称、はーさん)や、メガネかけてて頭が大きくてルールーとかいう若い異星人(通称、火星人)が登場するのです。ふざけてるのかと思いきや、ラスト3分で急にシリアスになったりすると嬉しい。こぶさんが巨大白色彗星に特攻したり、はーさんが仲間引き連れて機械化惑星に乗り込んだり、火星人が地球のウイルスに感染して倒れたり、ヒロインが縮体炉を持ち出して凄い事して地球に漂流して夜景で云々とか。シリーズものなら毎回ラストでヒロインが何か壊すのもいいな。惑星とか。…宇宙を舞台にすれば、宣伝コピー作るの楽そう。宇宙船がワープしてる時にその手のシーンを盛り込んで、「世界初!亜光速○○○シーン!」なんて書けちゃう。…ワープは亜光速云々とは別ですか。SF者じゃないからそのへん全然判らない。

今年最後の記事がこれかよ。

2002/12/31(火) [n年前の日記]

#1

弟が帰省。来るなり凄い剣幕で説教されてしまいました…
自分もそうだし誰でもそうだと思うんだけど、人というのは欲深で、
条件が満たされるとすぐさま次の条件を満たしたいと願わずにいられない。
でもモノによってはそれらが排他の可能性もあるので怖いです。

自分には社会から必要とされる能力・気力・熱意が欠片も無いので売り込みようが無い。困った。
このままこうしてはいられないのだけど、しかし高卒の若者すら二人に一人しか就職できないこの現状で、
中身が空洞のままの人間を雇う奇特な職場があるだろうか。
やはり売り物になる何かを自分の中に構築していくしかないのではないか…

2001/12/31(月) [n年前の日記]

#1 よいお年を

2001年も今日で最後ですね。
皆様よいお年を。

2000/12/31() [n年前の日記]

#1 描けないのです

年賀状用のCG描こうと唸ってたんですが。
筆、一向に進まず。
最近全然描いてないもんだから、どうも気負ってしまって。
そういうわけで、送るの遅くなりそう。申し訳無いッス >ALL

でも。
ネット上でのこの手のメールは、少しぐらい遅れたほうがいいかも?

ここ数年の、ネット人口の爆発的増加に加え…
年賀メールと言えば、通常の利用ではあまり行われてない、画像ファイル添付等が横行する可能性大…
それらの「容量がデカイ」メールを、CC,BCCで数十数百のメールアドレスに向け、同時期に大量送信するユーザが続出…

これらの点を考えれば、この時期、各メールサーバにかかる負荷、データ転送量は想像を絶するものがあるわけで。
ある意味、無自覚なユーザによるサーバ耐久テストが行われてると言っても過言ではなく。
すると…必然的にサーバに障害発生→送ったはずのメールが相手に届かない、といった事態がいつ起きてもおかしくない…
故に、時期を少しずらして送信するのが「賢いユーザ」…

ずらすといっても、限度がありますな (T_T)

なんだか相手の、
「年賀状(年賀メール)まで『遅刻』かよ」
という苦々しい表情が脳裏に浮かばないではないけど。
勘弁してください。いかんせん「オイラ」なんで。
そのうち届くと思います… (T▽T)

っていうか、コレ書いてる時点で既に21世紀なんですが。
でもなんとなくキリが悪いので、年始の挨拶は明日ってことで (^◇^;)

1999/12/31(金) [n年前の日記]

#1 (NoTitle)これを書いてる現在、...

これを書いてる現在、2000年1月1日です。ということで、皆様新年明けましておめでとうございます。今年もよろしくです (⌒▽⌒)/

2000年問題、今のところ問題は起きてないようですね。朝になったら何処かがミサイル発射してなければいいのだけど (;^_^A といってもロシアの一部は既に1月1日になってるそうなんで、そのへんもたぶん大丈夫なんだろうな。MY-PCも無事動作しております。ネットも繋げてます。階下のCanbeと足元のPC-9821As3はまだ動作確認してませんが。ちょっと心配。

で、12月31日の日記。
朝9:00頃から掃除。オイラは風呂場。天井を拭いたりしました。黒くなってるのはカビかと思ってたら虫だったり。
午後から親父さん、お袋さんと隣の郡山市へと買い出しに。オイラはヨドバシでCD-RとPSのジョイスティックを購入。ついでにビデオデッキもの値段も見てきたのですが予想以上に高くてガックリ。PanasonicのNV-SB900、VICTORのVXG200あたりを狙っていたのですが。PanasonicのNV-SB10あたりのほうがいいのかな。TBCと三次元なんとかとGRTも付いてるのが欲しいですが、そうなると機種が限られてきますね。
帰宅後、犬の散歩。その後昨晩寝てなかったせいか、いつのまにやらコタツで爆睡。起きたら紅白が終わろうとしてました。
と、そんな感じです〜。

以上、25 日分です。

過去ログ表示

Prev - 2024/04 - Next
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30

カテゴリで表示

検索機能は Namazu for hns で提供されています。(詳細指定/ヘルプ


注意: 現在使用の日記自動生成システムは Version 2.19.6 です。
公開されている日記自動生成システムは Version 2.19.5 です。

Powered by hns-2.19.6, HyperNikkiSystem Project