mieki256's diary



2021/06/25(金) [n年前の日記]

#1 [love2d] love2dで点と凹多角形の内外判定

love2d を使って、点と凹多角形の内外判定を試してみた。環境は Windows10 x64 20H2 + love2d 11.3。

点と凸多角形の内外判定は、先日試してみたのだけど。

_love2dで凸多角形の内外判定

凹多角形との判定はしてなかったので、できるかな、どうかなと。

ググってみたら以下の解説ページが参考になった。ありがたや。

_点と凹多角形の内外判定を行う - e.blog
_【第2回】点の多角形に対する内外判定|【技業LOG】技術者が紹介するNTTPCのテクノロジー|【公式】NTTPC
_ある点と多角形の内外判定 - Qiita
_多角形の内外判定(javascriptでの実装を添えて) - 加具留矢流余

なんでも、2つのアルゴリズムがあるそうで…。 自分も大学時代にこの手のアルゴリズムを試したけど、その際は Crossing Number Algorithm を使った記憶があるなと。

今回は、角度の合計を調べる Winding Number Algorithm を試してみたい。JavaScript で実装した以下の版をそのまま参考にさせてもらって、Lua で書き直してみる。

_多角形の内外判定(javascriptでの実装を添えて) - 加具留矢流余

こんな感じになった。

concave_poly_collision_ss.gif

ソースは以下。

_main.lua
function love.load()
  polys = {
    {20, 80, 80, 20, 120, 140},
    {140, 80, 200, 20, 260, 100, 200, 180},
    {340, 20, 400, 60, 380, 160, 320, 160, 280, 80},
    {460, 60, 520, 20, 600, 60, 600, 160, 520, 180, 460, 140},
    {140, 340, 260, 340, 280, 420, 100, 440, 20, 360, 40, 200, 100, 200},
    {500, 320, 460, 220, 380, 240, 440, 340, 300, 360, 340, 440, 500, 420, 520, 460, 620, 420, 600, 320}
  }

  hits = {}
  for i = 1, #polys do
    hits[i] = false
  end
end

function sign(x)
  return (x < 0 and -1) or 1
end

function getDeg(x1, y1, x2, y2)
  local abs1, abs2, theta, s
  abs1 = math.sqrt(x1 * x1 + y1 * y1)
  abs2 = math.sqrt(x2 * x2 + y2 * y2)
  theta = math.acos((x1 * x2 + y1 * y2) / (abs1 * abs2))
  s = sign(x1 * y2 - y1 * x2)
  return theta * s
end

function checkInPoly(pos, mx, my)
  local thetaSum = 0
  local x0, y0, x1, y1
  local v1x, v1y, v2x, v2y
  x0, y0 = pos[#pos-1], pos[#pos]
  if x0 == mx and y0 == my then return true end
  for i = 1, #pos-1, 2 do
    x1, y1 = pos[i], pos[i+1]
    if x1 == mx and y1 == my then return true end
    v1x, v1y = x0 - mx, y0 - my
    v2x, v2y = x1 - mx, y1 - my
    thetaSum = thetaSum + getDeg(v1x, v1y, v2x, v2y)
    x0, y0 = x1, y1
  end
  thetaSum = math.abs(thetaSum)
  if thetaSum >= 0.1 then return true end
  return false
end

function love.update(dt)
  local mx, my
  mx, my = love.mouse.getPosition()

  for i = 1, #polys do
    hits[i] = checkInPoly(polys[i], mx, my)
  end
end

function love.draw()
  -- clear canvas
  love.graphics.clear(0, 0, 0, 1)

  -- draw polygon
  for i = 1, #polys do
    if hits[i] then
      love.graphics.setColor(1, 0, 0, 1)
    else
      love.graphics.setColor(0, 1, 0, 1)
    end
    love.graphics.polygon("line", polys[i])
  end

  -- draw text
  love.graphics.setColor(1, 1, 1, 1)
  love.graphics.print("ESC to exit.", 8, 8)
end

function love.keypressed(key, scancode, isrepeat)
  if key == "escape" then
    love.event.quit()
  end
end

_conf.lua
function love.conf(t)
  t.window.width = 640
  t.window.height = 480
  t.window.title = "Collison concave polygon"
  t.window.fullscreen = false
  -- t.window.fullscreentype = "exclusive"
end

とりあえず、これで凹多角形との内外判定もできそうだなと…。

HCライブラリを使ってみる。 :

その後ググっていたら、love2d から利用できる衝突判定ライブラリ、HC というものがあると知った。ソレを利用することでも目的を果たせそう。試用してみる。

_vrld/HC: General purpose collision detection library for the use with LoVE.
_HC - General purpose collision detection with LoVE - HC 0.1-1 documentation

ライセンスは…。

_License - HC 0.1-1 documentation

ちょっとよく分からないけど、無料で使えるとか、制限は無いとか書いてあるように見える。

入手の仕方は、github から zip をDLするか(緑色で「code」と書かれてる部分をクリック → Download ZIP)、git を使って clone する。
git clone https://github.com/vrld/HC.git

love2d の main.lua と同階層に、HCというフォルダを作成して、その中に、DLした *.lua 群をコピーする。
.
|-- HC
|   |-- README
|   |-- class.lua
|   |-- gjk.lua
|   |-- hc-0.1-1.rockspec
|   |-- init.lua
|   |-- polygon.lua
|   |-- shapes.lua
|   |-- spatialhash.lua
|   `-- vector-light.lua
|-- conf.lua
`-- main.lua

main.lua の中では、HC = require "HC" とか、Polygon = require "HC.polygon" を最初のほうに書いてから使う。

試用してみたところ、こんな感じになった。それらしく判定できている。

hc_collision_ss.gif

ソースは以下。今回は、HC.polygon だけを使って処理をしている。

_main.lua
Polygon = require "HC.polygon"

function love.load()
  
  polys = {
    {20, 80, 80, 20, 120, 140},
    {140, 80, 200, 20, 260, 100, 200, 180},
    {340, 20, 400, 60, 380, 160, 320, 160, 280, 80},
    {460, 60, 520, 20, 600, 60, 600, 160, 520, 180, 460, 140},
    {140, 340, 260, 340, 280, 420, 100, 440, 20, 360, 40, 200, 100, 200},
    {500, 320, 460, 220, 380, 240, 440, 340, 300, 360, 340, 440, 500, 420, 520, 460, 620, 420, 600, 320}
  }

  hits = {}
  p = {}
  for i = 1, #polys do
    hits[i] = false
    p[#p + 1] = Polygon(unpack(polys[i])) 
  end
end

function love.update(dt)
  local mx, my
  mx, my = love.mouse.getPosition()

  for i = 1, #p do
    hits[i] = p[i]:contains(mx, my)
  end
end

function love.draw()
  -- clear canvas
  love.graphics.clear(0, 0, 0, 1)

  -- draw polygon
  for i = 1, #p do
    if hits[i] then
      love.graphics.setColor(1, 0, 0, 1)
    else
      love.graphics.setColor(0, 1, 0, 1)
    end
    love.graphics.polygon("line", p[i]:unpack())
  end

  -- draw text
  love.graphics.setColor(1, 1, 1, 1)
  love.graphics.print("ESC to exit.", 8, 8)
end

function love.keypressed(key, scancode, isrepeat)
  if key == "escape" then
    love.event.quit()
  end
end

_conf.lua
function love.conf(t)
  t.window.width = 640
  t.window.height = 480
  t.window.title = "Collision HC"
  t.window.fullscreen = false
  -- t.window.fullscreentype = "exclusive"
end

  • HC.polygon を新規作成する際、配列を unpack(配列名) で渡してやらないとエラーが出る。
  • :contains(x, y) で、点がポリゴンの中に入ってるかどうかを true / false で調べられる。
  • :unpack() で、ポリゴンの頂点配列を、ポリゴン描画をする love.graphics.polygon() に渡しやすくなる。

最初からこのライブラリを使えばよかったのだな…。

余談。ポリゴン描画に注意。 :

love2dのポリゴン描画、love.graphics.polygon("fill", ...) を使っていたら、妙な動作に気づいた。環境は、Windows10 x64 20H2 + love2d 11.3 x86版。

love.graphics.polygon() は、線を描画する "line"、塗り潰しをする "fill" のどちらかを指定できるけど、どうも "fill" のほうは形がおかしくなるようで…。

draw_polygon_ss.png

ソースは以下。

_main.lua
function love.load()
  pos = {500, 320, 460, 220, 380, 240, 440, 340, 300, 360, 340, 440, 500, 420, 520, 460, 620, 420, 600, 320}
end

function love.update(dt)
end

function love.draw()
  love.graphics.clear(0, 0, 0, 1)
  
  love.graphics.setColor(0, 0.75, 0, 1)
  love.graphics.polygon("fill", pos)
  love.graphics.setColor(1, 0, 0, 1)
  love.graphics.polygon("line", pos)
  
  love.graphics.setColor(1, 1, 1, 1)
  love.graphics.print("ESC to exit.", 8, 8)
end

function love.keypressed(key, scancode, isrepeat)
  if key == "escape" then
    love.event.quit()
  end
end

_conf.lua
function love.conf(t)
  t.window.width = 640
  t.window.height = 480
  t.window.title = "Draw polygon"
  t.window.fullscreen = false
  -- t.window.fullscreentype = "exclusive"
end

これはバグ…? と思ったら、ドキュメントに記述があった。

_love.graphics.polygon - LOVE

「"fill"を使った時は凸多角形しか正常に描画できないよ」とのことで。仕様だったらしい…。ドキュメントはちゃんと読まないといかんなと…。

love.math.isConvex() を使えば凸多角形か判定できるし、love.math.triangulate() を使えば多角形を三角形に分割できるそうで。凹多角形の可能性があるなら三角形に分割して処理すべし、ということかな…。

_love.math.isConvex - LOVE
_love.math.triangulate - LOVE

せっかくだから、三角形に分割して描画する方法も試してみた。

_main.lua
function love.load()
  polys = {
    {40,80,100,20,200,80,180,220,100,260,20,200},
    {340,280,300,200,440,180,380,80,460,60,500,160,600,160,620,260,520,300,500,260}
  }
end

function love.update(dt)
end

function love.draw()
  love.graphics.clear(0, 0, 0, 1)

  for i, v in ipairs(polys) do
    local convex = love.math.isConvex(v)
    if convex then
      love.graphics.setColor(0, 0.75, 0, 1)
      love.graphics.polygon("fill", v)
    else
      local col = {{0,0,1}, {0,0.25,1}, {0,0.5,1}, {0,0.75,1}}
      local triangles = love.math.triangulate(v)
      for i = 1, #triangles do
        love.graphics.setColor(unpack(col[(i % #col) +1]))
        love.graphics.polygon("fill", triangles[i])
      end
    end

    love.graphics.setColor(1, 0, 0, 1)
    love.graphics.polygon("line", v)

    love.graphics.setColor(1, 1, 1, 1)
    local s = convex and "true" or "false"
    love.graphics.print("Convex : " .. s, 4, i * 20 + 20)
  end

  love.graphics.setColor(1, 1, 1, 1)
  love.graphics.print("ESC to exit.", 4, 4)
end

function love.keypressed(key, scancode, isrepeat)
  if key == "escape" then
    love.event.quit()
  end
end

_conf.lua
function love.conf(t)
  t.window.width = 640
  t.window.height = 480
  t.window.title = "Draw polygon as triangle"
  t.window.fullscreen = false
  -- t.window.fullscreentype = "exclusive"
end

draw_polygon_tri_ss.png

凹多角形の場合、三角形に分割して描画できていることが分かる。

#2 [windows] Windows11が発表されたらしい

「次期WindowsはWindows11になるよ」と発表されたらしい…。

自分のメインPC(Windows10 x64 20H2、AMD Ryzen 7 1700 + GIGABYTE B450M S2H rev. 1.x) で、Winodws11にアップグレード可能かどうかをチェックできるツールをインストールして動かしてみたけれど。

_Microsoft、Windows 11互換性チェックプログラムを公開 - PC Watch

「お前のPCはアップグレードできねえよ」と表示されてしまった…。このツール、一体何が原因でアップグレードできないのか、そのあたりの情報を一切表示してくれないあたりがなんというか…。

TPM 2.0の問題。 :

Windows11導入時に要求される条件を眺めてみたら、TPM 2.0 が必要、てなあたりが気になった。

Windows10でデバイスマネージャを表示して(スタートボタンを右クリック → デバイスマネージャ)、「セキュリティデバイス」内に「トラステッド プラットフォーム モジュール 2.0」があれば対応しているっぽい。自分のPCには無かった…。

ただ、Ryzen 7 1700 でも、有効にできる可能性があるらしい。M/BのBIOS設定画面に入って(電源投入直後にDELキーを叩くとBIOS設定画面に入れる)、設定を確認してみたら、「周辺機器」の中で、「AMD CPU fTPM」なる項目が無効になっていた。有効にしてみたところ、Windows10起動後のデバイスマネージャで、「トラステッド プラットフォーム モジュール 2.0」が出現してくれた。

しかし、TPM 2.0 を有効にしたはずが、相変わらず「お前のPCはアップグレードできねえよ」と言われる。

UEFIモードの問題。 :

Windows11は、BIOSモードが「UEFI」じゃないと導入できないらしい。

BIOSモードは、msinfo32(システム情報) で確認できる。msinfo32 を起動 → 「BIOSモード」。自分のPCは「レガシ」になってた…。更に、「セキュアブートの状態」が「サポートされていません」になっていた。

BIOSモードを Legacy(レガシ)から UEFIにするためには、起動ディスクが MBR ではなく GPT になっていないといかんそうで。

起動ディスクの状態は、ディスクの管理で確認できる。スタートボタンを右クリック → ディスクの管理。「ディスク0」を右クリック → プロパティ → ボリューム → パーティションのスタイル。自分のPCは「マスターブートレコード(MBR)」になってた…。

MBR を GPT にする方法はあるらしい。MBR2GPT.EXE を使うのだとか。

_MBR2GPTでブートセクタをMBRからGPTに変換してレガシBIOSをUEFIモードに変換する - Windows 10
_Windows 10 64bitがインストールされているSSDをLegacyからUEFIに変換してみた | 銀メモ -SilveryMemo-
_今後のことを考えて、MBRをGPTに変換。 - もうやんの自作パソコンへの道

でも、GPT にした場合、HDD関連ツールは対応できるのだろうか…。例えば、HDD/SSDの調子が悪くなってファイルを救出したい場合、その手のツールがGPTに未対応だったりすると困りそう…。

M/BのBIOS設定で、UEFIモードを有効にする方法も分からない。HDD/SSDがGPTなら、自動でUEFIモードになるのだろうか。それとも、どうにかして手動で設定しないといかんのだろうか。

そのあたりよく分からんので、もうちょっと調べてから、GPTに変換するかどうかを検討しよう…。

2021/06/26追記。 :

そもそも、Windows11が使えるCPU一覧に、Ryzen 1000番台は入ってなかった。酷い。なんだかそこで弾いてそうだな…。

2020/06/25(木) [n年前の日記]

#1 [prog] Godot Engine を起動して眺めてる

Godot Engine 3.2.1 を起動して、以前作ってたプロジェクトを眺めてたり。どうやってここまで作ったのか、すっかり忘れてる…。ヤバイ…。

2019/06/25(火) [n年前の日記]

#1 [nitijyou] 少し調べ物をしてる

手元の環境に入っている某3Dゲームの操作方法がふと気になり始めて、色々試しつつ各種情報をググってるところ。そのゲームには、オブジェクトを自分好みに配置・ポージング等ができるスタジオ機能なるものがついているけれど、なんだか難しそうなので今まで全く手を付けてなかったわけで。

このあたり、昔と今では自分の感覚が変わってきてるような気がしたり。学生時代にPCソフトを入手したら、マニュアル等が無くても興味津々でとにかく触ってみて、なんとなく使い方を把握していっただろうけど。最近はチュートリアル記事・動画等が無いと ―― いや、あったとしても、「面倒臭そう」と思ってしまって、ついつい放置してしまうところがあるというか。

自分にとって、昔のPCは、玩具だったのだろうなと。ソフトの使い方なんてものは、ある種のADVゲームみたいなもので…。このコマンドを打つとこんなシーンが見れるぞ、ここをクリックすると新しい画面が見れるのだな、てなノリで触ってた気がする。

そのあたりの感覚が、自分の中では変わってしまったことを感じるというか。歳を取ったからなのか、それともPCを取り巻く環境が大きく変わったからなのか、どちらなのかはわからんけど。マニュアル・取扱説明書があって当たり前、チュートリアルも用意されてるのがフツー、みたいな感覚に。まあ、昔のソフトと比べたら、今のソフトはなんでも複雑になってるところもあるのだろうけど。

考えてみたら、昔のソフトはそんなに数が無かったような気もする。ネットも無かったし。目の前にあるソフトをとにかく弄ってみる、ぐらいのことしか、やることがなかったのかもしれない。

今は、ネットもあるし、ググってみると、ソフト数もジャンル数も膨大で…。状況が全然違うのだから、各ソフトと対峙する際の感覚が変わるのも仕方ない、のかな…。

2018/06/25(月) [n年前の日記]

#1 [zatta] 昔のゲームの動画を眺めてたり

「レイフォース」関連の記事を眺めてたら、NAMCOが出した「ネビュラスレイ」なるゲームがあると知り、ググって動画を眺めていたり。

_秋のシューティング祭 第16戦 ネビュラスレイ(Nebulasray) - YouTube

こんなゲームがあったのか…。いや、当時も目にしていた可能性が高いのだけど、記憶に残ってない…。

その、「ネビュラスレイ」。3DCGのプリレンダリング画像を表示しているゲームで。ただ、動画の解説音声によると、ミニチュアを撮影して云々、という話もあるようで。もっとも、ググってみてもミニチュアを云々という話は見つからなかったので、解説者が何か勘違いしているか、もしくは極一部でしか使われてないので一般にはあまり知られてない話、だったりするのかもしれないなと。今となっては実際のところは分からない…。当時のゲーメストあたりに載ってそうではあるけど…。

それはともかく。ミニチュアを撮影して云々、という作り方は、今ならもっと訴求力を持つかもしれないなと思えてきたりもして。昔のゲーム画面は低解像度だったし、色数も16色や32色だったし、ROM容量の制限もあったので、実写取り込みにしろ3DCGプリレンダリングにしろ、最終画面がちょっとアレになってしまうところもあっただろうけど。今なら、高解像度になったし、フルカラーで表示できるし、容量だって昔に比べたら比較的余裕がある状態、と言えなくもないし。当時は仕上がりがしょんぼりだったアレコレも、今試してみたらリッチになるのではないか…。

もっとも、ミニチュアを作って撮影して表示するより、3DCGでリアルタイムにレンダリングしたほうが、自由度も高いし、画面を作り込めるか…。昔の映像作品がミニチュアを使っていたのは、それ以外に映像化する方法が無かったからで。他の方法が既にあるなら、ミニチュアにこだわる意味は無いよな…。

2017/06/25() [n年前の日記]

#1 [blender] blenderのパーティクルでビルボードを並べられるか実験

木のビルボードを大量に発生させて、その中を突き進んでいくカメラ、みたいなソレをやってみたい。TVゲームのアフターバーナーの背景みたいなアレ。

無料で使える3DCGソフト、blenderのパーティクル機能には、ビルボードなる種類も用意されているようで。ソレを使えばできるんじゃないかと思えてきたので実験を。

こんな感じになりました。





うむ。blenderのパーティクル機能を使っても、ある程度はできそうですな…。

手順をメモ。 :

自分自身も忘れそうなので、作業手順をちと細かくメモ。…メモしたこと自体をたぶん忘れそうだけど。

ちなみに、レンダラーは blenderレンダーを選択。Cyclesじゃなくて古いほう。環境は、Windows10 x64 + blender 2.78。

まずは、地面に相当する平面(Plane)を1つ追加。
  • Shift + A → メッシュ → 平面。
  • もしくは、3Dビューウインドウの下のほうのメニューから、追加 → メッシュ → 平面。
particle_ss_01.png

平面が1つ追加された。
particle_ss_02.png

後々、複製(Alt + D)して並べる時のことを考えて、オブジェクトの中心点が端になるように座標群を調整。
  1. TABキーを押して編集モードに切り替え。
  2. 次の順番でキーを叩く。g → x → 1 → Enter。
  3. g → y → 1 → Enter。
  4. TABキーを押してオブジェクトモードに切り替え。
途中で押してるキーの意味は…。gキーは移動。xはx方向の移動のみに制限。1は移動量。Enterで決定。
particle_ss_03.png

UVマップを作成しておく。 :

何故そうしないといけないのかちょっと分からんけど、この段階でダミーっぽい UVMap を作っておく。ここで作っておかないと、後になって木のビルボード用テクスチャ画像を読み込んだ際、妙なUV指定になってしまう。

データパネルに切り替えて、UVマップを1つ作成。UVMapという名前でUVマップが作られる。
particle_ss_04.png

パーティクルを追加。 :

いよいよ、平面からパーティクルが出てくるように設定する。

パーティクルパネルに切り替えて、「新規」ボタンをクリックして、パーティクルを追加。
particle_ss_05.png

パーティクルの設定を行う。
  • パーティクルのタイプは「エミッター」に。エミッターってのは、パーティクルを放射・発射するブツ。発射口とでも言えばいいのだろうか…。
  • 「放射」の「数」は、発生させるパーティクルの総数。テキトーな数値を入れておく。
  • 「開始」と「終了」を1にする。パーティクルは、ここで指定した開始〜終了フレームの間に総数分が発生する、という仕様になってる。両方が1ということは、開始早々、総数分を全部発生、という指定になる。
  • 「寿命」に大きい値を入れる。パーティクルは、ここで指定したフレーム数分存在し続けるけど、大きい値を指定すれば、アニメが終わるまでずっとそこに存在し続ける状態になる。
  • 「物理演算」は「なし」にする。例えばここが「ニュートン力学」等になっていると、アニメを再生した際、各パーティクルが重力で落ちていってどこかに消えてしまう。ずっとそこに留まり続けてほしいので、物理演算はしない方向で。
particle_ss_06.png

更に、「レンダー」の設定をする。
  • タイプは「ビルボード」に。ビルボードと言うのは、常時カメラのほうに向き続けるポリゴンみたいなもの。立て看板とでもいうか。
  • 「整列」の「固定」にチェックを入れてから、「Z」をONに。これで、各ビルボードが、横方向にのみカメラを追ってグルグルと回る状態になる。
  • 「ビルボードオフセット」のYを1.0にする。木は地面の上に立っているので…。ここが0.0だと、木が地面の中にめり込んでる状態になってしまう。
  • 「拡大縮小」の値をテキトーに入力。ビルボードの見た目の大きさを変更できる。
particle_ss_07.png

とりあえずこの段階で、大量にビルボードを発生できそうな気配が見えてくる。後はビルボードの設定をしてやれば…。

マテリアルを追加。 :

エミッター(地面)用のマテリアルと、木のビルボード用のマテリアルを作成する。

マテリアルパネルに切り替えて、「新規」ボタンをクリック。
particle_ss_08.png

地面用のマテリアルと、木のビルボード用のマテリアルの2つを作成した。
particle_ss_09.png

テクスチャ画像を追加。 :

木のビルボード用テクスチャ画像を追加していく。

木のビルボード用マテリアルを選択した状態で、テクスチャパネルに切り替える。「新規」ボタンをクリック。
particle_ss_10.png

「画像」の「開く」ボタンをクリックして、木のビルボード用テクスチャ画像を読み込む。
particle_ss_11.png

一応念のため、実験に使ったビルボード用テクスチャ画像を置いときます。CC0 / Public Domain ってことで。ファイルサイズが 5MB と大きいので注意。

_tree03_2048x2048.png (5.0MB)

テクスチャ画像が読み込まれた。
particle_ss_12.png

テクスチャとマテリアルの設定。 :

木のビルボード用テクスチャ画像はpng画像なので、透明・透過部分を示すアルファチャンネルを持っている。透明・透過部分は抜けるように、テクスチャとマテリアルを設定したい。

まずはテクスチャパネル上で、テクスチャの設定。
  • 「イメージマッピング」の「延長」を「クリップ」に設定。デフォルトではここが「リピート」になってるけど、「リピート」の状態だと上下左右が繋がってしまって画面にゴミが出てくるので…。
  • 「影響」の「カラー」「アルファ」にチェックを入れる。
  • 「ブレンド」を「乗算」にする。
particle_ss_13.png

マテリアルパネルに切り替える。
  • 「シェーディング」の「陰影なし」にチェックを入れる。これで、ディフューズ(拡散色)とスペキュラー(反射色・ハイライト色)の設定は無視される状態になる。
  • 「透過」にチェックを入れて、「Z値透過」をONにする。
  • 「オプション」の「面テクスチャ」にチェックを入れる。
particle_ss_14.png

パーティクルのビルボードは、影を落とそうとすると板ポリゴンの形そのままで影を落としてしまう。なので、「影」関係の設定は全部OFFにする。
particle_ss_15.png

(2017/06/26追記。影を落とす設定も見つけたけど、ちょっと問題が…。なので、やっぱり影関係は全部OFFにしたほうがヨサゲ。)

パーティクルのビルボードにマテリアル情報を反映。 :

ビルボードのマテリアルとテクスチャが設定できたので、パーティクルのビルボードに該当マテリアルを使うように指定してやる。

パーティクルパネルに切り替えて、「レンダー」のマテリアルに、先ほど設定したビルボード用のマテリアルを指定。
particle_ss_16.png

本当に反映されるか確認。3Dビューウインドウの下のほうのレンダー種類を「レンダー」に切り替え。もしくは Shift + Z でも「レンダー」と「ソリッド」を切り替えられる。…ちゃんと木っぽいものが表示された。
particle_ss_17.png

カメラのアニメをつける。 :

カメラを動かすアニメをつけていきたい。

まずは、何も設定していない状態でアニメを再生してみる。
  • 3Dビューのレンダー種類を「ソリッド」にでもしておいて…。「レンダー」では重くてアニメが再生されないので…。
  • Alt + A、もしくはタイムラインウインドウの下のほうの再生ボタンをクリックすれば、アニメが再生される。
  • もう一度 Alt + A を叩けば再生は止まる。
particle_ss_18.png

ここまでの設定が正しければ、まだ何もアニメをつけてないので、3Dビューウインドウ上では何も動かないはず。動いたら、どこかで設定を間違ってる。もし、各パーティクルが下のほうに落っこち始めたら、物理演算が有効になってる。その際はパーティクルの「物理演算」を「なし」にしてやる。

問題が無ければ、初期カメラ位置を調整していく。

テンキーの0を叩いて、カメラ視点にしてやる。その状態で Shift + F を叩けば、WASDキー + QRキー + マウスカーソル移動で、カメラの位置や向きを、見た目で調整できる。決定は左クリック、もしくはEnter。3Dビューウインドウの下のほうにショートカットキーの一覧が表示されてるので参考に。
particle_ss_19.png

アニメーションの設定をする。レンダーパネルに切り替えて、解像度だの、フレーム範囲だの、フレームレートだの、出力フォーマットだのを指定。
particle_ss_20.png

ちなみに、レイトレーシングを無効にするとレンダリング速度がちょっと早くなる。が、代わりに何かの機能が使えなくなるのだと思う。

1フレーム目に移動。Ctrl + Shift + ↓、もしくはタイムラインウインドウの下のほうにあるボタンで、最初のフレームに移動できる。

カメラを選択して、1フレーム目のカメラ位置や角度を設定してやる。

キーフレームを打つべく、Iキーを叩く。メニューが出てくるので「位置」もしくは「位置/回転」を選択。これで、1フレーム目に、カメラのキーフレームが設定された。
particle_ss_21.png

最終フレームに移動。Ctrl + Shift + ↑、もしくはボタンで、最終フレームに移動できる。
particle_ss_22.png

最終フレームのカメラ位置を設定したら、Iキーを叩いて、「位置」もしくは「位置/回転」を選択。
particle_ss_23.png

これで、1フレーム目と最終フレームにキーフレームが設定された。キーフレームの間のカメラ座標値や角度は blender が補間して作ってくれる。

Alt + A で、アニメを再生して動きを確認。

動きが気に入らなければ、1フレーム目や最終フレームに移動して微調整して、Iキーを叩いてキーフレームを設定し直し。

レンダリング。 :

レンダリングは、レンダーパネルの上のほうの「アニメーション」をクリック。

レンダリングは時間がかかるけど、単にプレビューっぽい感じでざっくりと動きの雰囲気だけ掴みたいなら、解像度設定の「100%」を「25%」等にしてレンダリングしてやれば、縦横1/4のサイズになってすぐにレンダリングが終わるので…。この動きでOK、と思ったところで「100%」に戻して本番レンダリングすればよろしいかと。

ちなみに自分の場合は、一旦連番pngで保存してからAviUtlで読み込んでmp4動画にしてます。

_【AviUtl】x264guiExとは?特徴や出力形式について(1/3)

いやまあ、blender も、出力 → FFmpeg video を選べば、直接mp4動画等を出力することもできますが…。コレ、標準で選べるのかな? ちとよく分からず。

ともあれ。blenderのパーティクルのビルボードを使えば、木をわらわらと生やしたりできるようですよ、とメモ。

余談。 :

例えばだけど、 _ANT Landscape アドオン で山っぽい地形を生成して、頂点でパーティクルを発生するように設定すれば、こんな感じの見た目にもできる、とメモ。



よく見ると前後関係がおかしくなってチラチラしてる部分があるけれど。ビルボードはカメラが回転したりゆっくり動いたりすると、ネタがバレるというか、こういった問題が出やすいというか。あくまでインチキなので…。

課題。 :

パーティクルのタイプには、「エミッター」とは別に「ヘアー」というのもあるようで。ヘアーを使ってもこういうことはできるのだろうか…? ググってみたけど、ちょっとよく分からなかった。

「ずっとそこに留まり続ける何か」という点では、「ヘアー」がまさしくソレだろうと思うのだけど…。こういう場合も使えるのだろうか。

それと、影が無いのが気になる…。ビルボード用テクスチャの作り方次第で、誤魔化せないものだろうか…。

参考ページ。 :


2016/06/25() [n年前の日記]

#1 [pc][ubuntu] 200円ケース機でUSBメモリにインストールしたLubuntuを起動しようと実験

200円ケース機でOSを動かしたい。先日から何かと触ってる Lubuntu 14.04 LTS をインストールしてみようかなと。インストールと言ってもHDDは積んでないので、この際USBメモリにインストールして起動させたらどうなるかな、と。

一応スペックをメモ。

USSBメモリへのインストール。 :

Lubuntuは、USBメモリにLiveCD相当を入れて使うこともできるけど。今回は、USBメモリをHDDに見立ててインストールしてみる。

USBメモリは2つ用意する。
  • 1つは、Lubuntu の iso を書き込んでブートできるようにしたインストール・セットアップ作業用のUSBメモリ。LiveCD相当なので容量は少なくてもいい。今回は 2GB or 4GB を用意した。
  • 1つは、空のUSBメモリ。コイツをHDDに見立ててインストールするので、容量は大きいものを。今回は16GB or 32GB を用意した。

LiveCD相当のUSBメモリの作り方は、iso を UNetbootin でUSBメモリに書き込む、てないつもの感じで。

PCに、2つのUSBメモリを差して、USBメモリから起動。

デスクトップ画面にHDDインストール処理用のアイコンがあるからダブルクリックすると、HDD(に見立てた空のUSBメモリ)へのインストール処理が開始される。

途中で、「マウントされてるリムーバブルドライブ(= 空のUSBメモリ)が見つかったんだけどマウント解除する?」と尋ねてくるので「はい」を選ぶ。その後、HDDを削除してインストールするか等の選択画面が出てくるけど、その他の選択肢を選んで、空のUSBメモリ上に自分でパーティションを切ってみたり。
  • 基本パーティションを ext4 でごっそり確保。「/」を割り当て。
  • 論理パーティションで swap をちょっとだけ確保。メインメモリの2倍程度を確保するのが目安になってるらしい。
swapの確保量については色々な主張があるようだけど、昔から、同サイズ〜2倍程度と言われてるっぽいので、今回はそういう感じにしておく。

後はHDDにインストールする時と同じ流れで。

USBメモリから起動してみた感想。 :

一応、USBメモリから Lubuntu が起動したのだけど…。うむ。遅い。遅くてとても使う気にならない。今回使ったUSBメモリ(あるいは microSD)が遅い品ということだろうけど。

あまりに遅いので、しばらく前に買った USB3.0対応のUSBメモリを持ち出してそちらにもインストールし直してみたけど、焼け石に水だった。

BIOS関係の表示後、Lubuntuのスプラッシュ画面が出てくるまで1分7秒かかる。そこからデスクトップ画面が出てくるまで50秒かかる。たしか、先日どこかで見かけた、HDDからのLubuntu起動時間は15秒とかそんなもんじゃなかったかな…。15秒が2分になった…。

メニューからログアウトを選ぶと、ログアウトダイアログが出てくるまで5秒かかった。

そもそも、PCスペックが低い。MSI K8MM-V のオンボードビデオが遅いようで、画面がペロンペロンと書き換わるというか。Lubuntu が使ってる、軽い軽いと言われる LXDE ですらこうなるのか…。いやまあ、以前の日記でもペロンペロンについては愚痴って(?)いたけど…。

K8MM-V は VIA K8M800チップセットだけど、 _S3 UniChrome Pro が入ってるらしい。S3ですよ。懐かしい。そりゃ遅いわけで。その代り(当時としては)電気を食わないけど。

今回試したUSBメモリのベンチマークをメモ。 :

最初にインストールしてみた、microSDHC Transcend TS16GUSDC4 (16GB CLASS4) のベンチマークをメモ。カードリーダは、 _microSD専用カードリーダ BUFFALO BSCRMSDCBK (USB2.0接続) を使った。
-----------------------------------------------------------------------
CrystalDiskMark 5.1.2 x64 (C) 2007-2016 hiyohiyo
                           Crystal Dew World : http://crystalmark.info/
-----------------------------------------------------------------------
* MB/s = 1,000,000 bytes/s [SATA/600 = 600,000,000 bytes/s]
* KB = 1000 bytes, KiB = 1024 bytes

   Sequential Read (Q= 32,T= 1) :    20.367 MB/s
  Sequential Write (Q= 32,T= 1) :     6.107 MB/s
  Random Read 4KiB (Q= 32,T= 1) :     3.750 MB/s [   915.5 IOPS]
 Random Write 4KiB (Q= 32,T= 1) :     1.390 MB/s [   339.4 IOPS]
         Sequential Read (T= 1) :    19.922 MB/s
        Sequential Write (T= 1) :     5.871 MB/s
   Random Read 4KiB (Q= 1,T= 1) :     3.537 MB/s [   863.5 IOPS]
  Random Write 4KiB (Q= 1,T= 1) :     1.295 MB/s [   316.2 IOPS]

  Test : 100 MiB [E: 0.0% (0.0/14.8 GiB)] (x3)  [Interval=5 sec]
  Date : 2016/06/25 5:25:27
    OS : Windows 10 Professional [10.0 Build 10586] (x64)
    microSDHC Transcend TS16GUSDC4 16GB CLASS4 + BUFFALO BSCRMSDCBK(USB2.0)

transcend_ts16gusdc4.png

2回目に使ったのは、USB3.0対応USBメモリ Transcend JetFlash 790 TS32GJF790KPE。
-----------------------------------------------------------------------
CrystalDiskMark 5.1.2 x64 (C) 2007-2016 hiyohiyo
                           Crystal Dew World : http://crystalmark.info/
-----------------------------------------------------------------------
* MB/s = 1,000,000 bytes/s [SATA/600 = 600,000,000 bytes/s]
* KB = 1000 bytes, KiB = 1024 bytes

   Sequential Read (Q= 32,T= 1) :    34.339 MB/s
  Sequential Write (Q= 32,T= 1) :    28.598 MB/s
  Random Read 4KiB (Q= 32,T= 1) :     4.885 MB/s [  1192.6 IOPS]
 Random Write 4KiB (Q= 32,T= 1) :     1.289 MB/s [   314.7 IOPS]
         Sequential Read (T= 1) :    33.976 MB/s
        Sequential Write (T= 1) :    27.685 MB/s
   Random Read 4KiB (Q= 1,T= 1) :     3.951 MB/s [   964.6 IOPS]
  Random Write 4KiB (Q= 1,T= 1) :     1.173 MB/s [   286.4 IOPS]

  Test : 100 MiB [E: 0.0% (0.0/29.4 GiB)] (x3)  [Interval=5 sec]
  Date : 2016/06/25 2:56:32
    OS : Windows 10 Professional [10.0 Build 10586] (x64)
    Transcend TS32GJF790KPE JetFlash 790 (USB2.0接続)

transcend_jetflash790_usb2_0.png

一応、手持ちの品の中では Random Write がマシなモノを選んで使ったつもり、なのだけどな…。他の品は、0.009 とか 0.012 とかで…。

HDDを追加し直した。 :

これでは厳しいと思えてきたので、結局HDDを追加。追加したHDDは、Hitachi IC35L120AVV207-1 (120GB, IDE(Ultra ATA100)接続, 7200rpm)。

Lubuntu をインストールしてみたけど…。スプラッシュ画面が出てくるまで8秒、デスクトップ画面が出てくるまで45秒。IDE接続の古いHDDとは言え、USBメモリから起動するよりは速くなったけど、それでも…。いや、2分かかってたのが、45秒になってはいるけれど…。

ログアウトダイアログが表示されるまで、USBメモリ利用時と同様に5秒かかった。ここはストレージの速度に足を引っ張られていたわけではないっぽい…。本体スペックのせいか…。

無線LAN子機を変えてみた。 :

インストール作業中、ネットブック機から一時的に外した BUFFALO WLI-UC-GNM2 を使って実験してたけど。今日Amazonから届いた IO-DATA WN-G300UA (IEEE802.11n/g/b 300Mbps対応)と交換してみた。

Lubuntu 14.04 LTS の場合、IO-DATA WN-G300UA も繋ぐだけでフツーに使えた。ただ、300Mbps対応品でも150Mbpsまでの接続になるっぽい。

lsusb と打ってみたら以下の情報が出てきた。
$ lsusb

Bus 001 Device 004: ID 0bda:8178 Realtek Semiconductor Corp. RTL8192CU 802.11n WLAN Adapter

sshでアクセスしてみたら結構反応が速い。 :

Windows10 x64 + Putty を使って ssh でアクセスしてみたら結構反応が速くて「アレ?」と。

どうやらLubuntuのデスクトップ画面上では、ターミナルの描画すら遅くて全体の反応が遅いように感じてしまっていた模様。もしかして、ビデオカードを追加できたらそれなりの反応速度になるのだろうか…。しかし、以前AGPのビデオカードを追加した時は、おそらく電源容量が足りてなかったようで、途中で電源が落ちちゃったんだよな…。

#2 [nitijyou] Amazonから色々届いた

数日前に注文してた品が届いた。
_ディスプレイケーブル DVI-D⇔DVI-D シングルリンク対応|株式会社バッファロー BUFFALO
_WN-G300UA | 無線LAN子機 | IODATA アイ・オー・データ機器
_2.0ch マルチメディアスピーカー USB電源/ステレオミニプラグ音源|株式会社バッファロー BUFFALO

DVI-Dケーブルは、MDT243WG とATXケース機を接続するために購入。実際に使ってみたら、すんなり接続できた。やはりMDT243WGに付属していたDVI-Dケーブルは初期不良品だったっぽい。

無線LAN子機 IO-DATA WN-G300UA は、Ubuntu系でも繋ぐだけで使える無線LAN子機が欲しくて購入。一応手元に、Ubuntu系で使える無線LAN子機として BUFFALO WLI-UC-GNM、WLI-UC-GNM2 もあるのだけど、接続速度がなんだか遅いので、もう少し速くならないかと。ただ、速くなったかどうかは体感ではよく分からず。

スピーカは、PCのセットアップ作業時に使えるものが欲しいなと。先日100円ショップ(Seria)でキューブ型スピーカ x 2 を買って試したけれど、音が小さくて今一つ使えないなと思ったわけで。考えてみたら、どうせPCのセットアップ時ぐらいしか使わないなら、USB端子から電源を取ってしまってもいいよなと。しかも値段が400円未満だし。

ただ、実際にスピーカを入手してみたら、予想より全然大きかった。てっきり煙草の箱ぐらいのサイズかと勝手に思い込んでたけど…このサイズでは邪魔だな…。

スピーカから音を出してみたけど、ちゃんとそれなりの音量で鳴ってくれた。とは言え、当然ながら低音はほとんど鳴ってないはず。

#3 [anime] 精霊の守り人アニメ版はやっぱり凄いと思う

NHKで、精霊の守り人アニメ版が再放送されてるのだけど。刀鍛冶の回を見て唸ったり。やってることは、短槍を直してほしいと刀鍛冶のところに行きました、すると…てなだけの話なのだけど。

扉を開けて閉めるだけなのにハラハラするとは思わなかった。いや、再放送だから展開は分かってるわけだけど。ここでこういうBGM入れて雰囲気作ってたのか、等々、当時気づかなかったアレコレが発見できてなんだか嬉しいなと。

最後のあたりが、イイ。ただ短槍をブンブン振り回してるだけで、台詞が一つも無いのに、何がどうなったかちゃんと分かるという…。コレ、フツーのアニメだったら、何かしら色々な台詞を入れてしまうところだよなと。しかしそうしてしまうと、視聴した時のこの感覚、どこかスカッとした感じは得られない…。

刀鍛冶に喋らせて説明させた点と言い、台詞を絞りまくる点と言い、シリーズ構成や脚本のあたりからして既に何か違う感じがします。素晴らしい。放送当時も思ってはいたけど、やっぱり名作だなと…。

2015/06/25(木) [n年前の日記]

#1 [python] wxPythonで画像表示とかドラッグ移動とか勉強中

Python + wxPython を使って、エクスプローラから画像ファイルをドラッグアンドドロップして読み込んで表示して、それらの画像をマウスでドラッグ移動、するところまではできた。

このくらいできれば、後は細かいアレコレを追加していけばレイアウトツールぐらいは作れそうかなと。

#! /usr/bin/env python
# -*- mode: python; Encoding: utf-8; coding: utf-8 -*-

"""
画像ファイルをドラッグアンドドロップしてダブルバッファで表示。
マウスドラッグで画像表示位置を移動してみるテスト

Windows7 x64 + Python 2.7.10 + wxPython 3.0.2.0 で動作確認。
"""

import wx

USE_BUFFERED_DC = True


class MyObj():

    """マウスドラッグで移動できるオブジェクト用のクラス"""

    def __init__(self, bmp, x=0, y=0):
        """コンストラクタ"""
        self.bmp = bmp  # bitmapを記録
        self.pos = wx.Point(x, y)  # 表示位置を記録
        self.diff_pos = wx.Point(0, 0)

    def HitTest(self, pnt):
        """与えられた座標とアタリ判定して結果を返す"""
        rect = self.GetRect()  # 矩形領域を取得
        return rect.InsideXY(pnt.x, pnt.y)  # 座標が矩形内に入ってるか調べる

    def GetRect(self):
        """矩形領域を返す"""
        return wx.Rect(self.pos.x, self.pos.y,
                       self.bmp.GetWidth(), self.bmp.GetHeight())

    def SavePosDiff(self, pnt):
        """
        マウス座標と自分の座標の相対値を記録。
        この情報がないと、画像をドラッグした時の表示位置がしっくりこない
        """
        self.diff_pos.x = self.pos.x - pnt.x
        self.diff_pos.y = self.pos.y - pnt.y

    def Draw(self, dc, select_enable):
        """与えられたDCを使って画像を描画する"""
        if self.bmp.Ok():
            r = self.GetRect()  # 矩形領域を取得

            # ペンを設定しないと何故か描画できない
            dc.SetPen(wx.Pen(wx.BLACK, 4))
            dc.DrawBitmap(self.bmp, r.x, r.y, True)  # 画像を描画

            if select_enable:
                # 画像枠を描画
                dc.SetBrush(wx.TRANSPARENT_BRUSH)  # 透明塗り潰し
                dc.SetPen(wx.Pen(wx.RED, 1))  # 赤い線を指定
                # 矩形を描画
                dc.DrawRectangle(r.x, r.y, r.width, r.height)

            return True
        else:
            return False


class MyFileDropTarget(wx.FileDropTarget):

    """ドラッグアンドドロップ担当クラス"""

    def __init__(self, obj):
        """コンストラクタ"""
        wx.FileDropTarget.__init__(self)
        self.obj = obj  # ファイルのドロップ対象を覚えておく

    def OnDropFiles(self, x, y, filenames):
        """ファイルをドロップした時の処理"""
        self.obj.LoadImage(filenames)  # 親?の画像読み込みメソッドを呼ぶ


class MyFrame(wx.Frame):

    """ダブルバッファで表示するFrame"""

    def __init__(self, parent=None, title=""):
        """コンストラクタ"""

        wx.Frame.__init__(self, parent=parent, title=title, size=(800, 600))

        # PAINTイベント、SIZEイベントで呼ばれるメソッドを割り当てる
        self.Bind(wx.EVT_PAINT, self.OnPaint)
        self.Bind(wx.EVT_SIZE, self.OnSize)

        # マウスボタンを押した時に呼ばれるメソッドを割り当てる
        self.Bind(wx.EVT_LEFT_DOWN, self.OnMouseLeftDown)
        self.Bind(wx.EVT_LEFT_UP, self.OnMouseLeftUp)

        # マウスカーソルを動かした時に呼ばれるメソッドを割り当てる
        self.Bind(wx.EVT_MOTION, self.OnMouseMotion)

        # 画像格納用リストを初期化
        self.objs = []

        # マウスドラッグ処理用の変数を確保
        self.drag_obj = None
        self.drag_start_pos = wx.Point(0, 0)

        # 描画用バッファ初期化のために一度 OnSize() を呼ぶ
        self.OnSize()

        # ファイルドロップの対象をフレーム全体に
        self.droptarget = MyFileDropTarget(self)

        # ファイルドロップ受け入れを設定
        self.SetDropTarget(self.droptarget)

    def LoadImage(self, files):
        """D&Dされた画像をロードして描画"""
        x, y = 0, 0
        for filepath in files:
            b = wx.Bitmap(filepath)
            obj = MyObj(b,  x, y)
            self.objs.append(obj)
            x += 32
            y += 32

        self.UpdateDrawing()  # 描画更新

    def OnSize(self, event=None):
        """ウインドウサイズが変更された時に呼ばれる処理"""
        size = self.ClientSize  # クライアントのウインドウサイズを取得

        # ウインドウサイズで、空の描画用バッファ(bitmap)を作成
        self._buffer = wx.EmptyBitmap(*size)

        self.UpdateDrawing()  # 描画更新

    def UpdateDrawing(self):
        """描画更新"""
        dc = wx.MemoryDC()
        dc.SelectObject(self._buffer)

        self.Draw(dc)  # 実際の描画処理
        del dc  # Update()が呼ばれる前に MemoryDC を削除しておく必要がある

        # Falseを指定して背景を消さなくしたら画面のちらつきが出なくなった
        self.Refresh(eraseBackground=False)

        self.Update()

    def Draw(self, dc):
        """実際の描画処理"""
        dc.Clear()  # デバイスコンテキストでクリア
        for obj in self.objs:
            obj.Draw(dc, True)  # オブジェクトを描画

    def OnPaint(self, event=None):
        """画面書き換え要求があった時に呼ばれる処理"""
        if USE_BUFFERED_DC:
            # ダブルバッファを使う場合
            dc = wx.BufferedPaintDC(self, self._buffer)
        else:
            # ダブルバッファを使わない場合
            dc = wx.PaintDC(self)
            dc.DrawBitmap(self._buffer, 0, 0, True)

    def FindObj(self, pnt):
        """マウス座標と重なってるオブジェクトを返す"""
        result = None
        for obj in self.objs:
            if obj.HitTest(pnt):
                result = obj
        return result

    def OnMouseLeftDown(self, event):
        """マウスの左ボタンが押された時の処理"""
        pos = event.GetPosition()  # マウス座標を取得
        obj = self.FindObj(pos)  # マウス座標と重なってるオブジェクトを取得
        if obj is not None:
            self.drag_obj = obj  # ドラッグ移動するオブジェクトを記憶
            self.drag_start_pos = pos  # ドラッグ開始時のマウス座標を記録
            self.drag_obj.SavePosDiff(pos)

    def OnMouseLeftUp(self, event):
        """マウスの左ボタンが離された時の処理"""
        if self.drag_obj is not None:
            pos = event.GetPosition()
            self.drag_obj.pos.x = pos.x + self.drag_obj.diff_pos.x
            self.drag_obj.pos.y = pos.y + self.drag_obj.diff_pos.y

        self.drag_obj = None
        self.UpdateDrawing()

    def OnMouseMotion(self, event):
        """マウスカーソルが動いた時の処理"""
        if self.drag_obj is None:
            # ドラッグしてるオブジェクトが無いなら処理しない
            return

        # ドラッグしてるオブジェクトの座標値をマウス座標で更新
        pos = event.GetPosition()
        self.drag_obj.pos.x = pos.x + self.drag_obj.diff_pos.x
        self.drag_obj.pos.y = pos.y + self.drag_obj.diff_pos.y
        self.UpdateDrawing()  # 描画更新


if __name__ == '__main__':
    # メイン処理
    app = wx.App(False)
    frame = MyFrame(None, "DnD Image display use Double Buffer")
    frame.Show()
    app.MainLoop()

#2 [prog] Atomエディタを再インストール

Pythonスクリプトを書く際に、Atomエディタを試用していたのだけど。(環境は Windows7 x64。)

日付挿入ができる _date というパッケージをインストールしたら、Atomエディタがエラーを出すようになってしまって。 _Package.getActivationCommands is deprecated. - Issue #3 - dannyfritz/atom-date によると、Atom現行版では問題が起きるから使わないでくれ、と書いてあるように見える。残念。

しかし、アンインストールしようとしても、Atomエディタ上からはアンインストールできず。いや、おそらくアンインストールはできてるのだろうけど、ファイル → 環境設定 → install の画面で、インストール済みっぽい表示が消えてくれない状態になってしまって。

apm というコマンドラインツールを使えば、コマンドラインからパッケージのインストール・アンインストールができるらしいので、
apm uninstall date
apm install date
等を繰り返してみたのだけど変化無し。

仕方ないから、Atomをアンインストールして、再インストールしてみたり。

インストールしたパッケージ。 :

再インストール後にインストールしたパッケージは以下。apm list で表示できる。
C:\Users\USERNAME\.atom\packages (17)
├── atom-beautify@0.28.5
├── autocomplete-paths@1.0.2
├── autocomplete-python@0.5.0
├── autocomplete-ruby@0.1.0
├── color-picker@2.0.7
├── emmet@2.3.10
├── file-icons@1.5.8
├── highlight-line@0.11.0
├── highlight-selected@0.10.1
├── japan-util@0.1.1
├── japanese-menu@0.7.0
├── japanese-wrap@0.2.10
├── japanese-zen-han-convert@0.4.0
├── minimap@4.10.0
├── open-recent@2.2.4
├── project-manager@1.15.10
└── script@2.25.2

コメント行の見た目を変更。 :

コメント行がイタリック表示になってるのが気に入らないので、Themes → your stylesheet で辿り着ける styles.less に以下を追加して変更。
atom-text-editor::shadow .comment {
    font-style: normal;
}

キー割り当てを変更。 :

Keybindings → your keymap file で辿り着ける keymaps.cson に以下を追加。
'atom-text-editor:not([mini])':
  'ctrl-,': 'unset!'

'.platform-win32 atom-text-editor, .platform-linux atom-text-editor':
  'ctrl-shift-B': 'unset!'
  'shift-F5': 'script:close-view'
  'F5': 'script:run'

'atom-text-editor':
  'alt-f': 'native!'

'atom-workspace atom-text-editor':
  'ctrl-k ctrl-k': 'editor:delete-to-end-of-line'

# 'atom-text-editor':
#   'alt-shift-D': 'date:datetime'
  • emmet が Ctrl + , を使ってしまって、設定画面を開く Ctrl + , が使えなくなったので、emmet 側の割り当てを無効に。
  • script(現在開いてるファイルを実行)を、F5 と Shift + F5に割り当て。
  • Windows標準の Alt + F でファイルメニューが開くショートカットが使えないので修正。
  • Ctrl + K Ctrl + K に、行末まで削除を割り当て。

Scriptの修正。 :

Script を使って、Windows上でPythonスクリプトを実行しようとすると、最初の1行目の「#! /usr/bin/env python」(シバン、shebang)を読み取ってエラーが出てしまうので、該当行を無視するように修正。

C:\Users\ユーザ名\.atom\packages\script\lib\script-view.coffee 内の、getShebang というメソッド内で、何も処理をせずに return するようにした。

#3 [emacs] NTEmacsの設定を見直し

NTEmacs上でも Pythonスクリプトを書けるようにしたい。以前も設定はしていたらしいのだけど、Pymacs や python-mode が随分古い版を使ってたので、現行版に差し替えてみたり。

Windows上での Pymacs インストールは、 _Pymacs install for windows - ブログ for programming を参考に作業しました。ありがたや。

python-mode は、M-x list-packages だったか、M-x package-list-packages と打って、python-mode を探してインストールして(i を押してから x、だったような…)、古い版をアンインストールしたような…。たしかそのはず。

2014/06/25(水) [n年前の日記]

#1 [dxruby] DXRubyでラスタースクロールを使ったレースゲームの画面を再現できないか実験してみたり

昔、ラスタースクロールを利用した、レースゲーム・ドライブゲームが結構ありましたけど。例えば、 _ポールポジション とか。 _アウトラン とか。…ラスタースクロールと言うか、ラスター割り込み、水平帰線期間割り込み処理を利用したレースゲーム、と言えばいいのかな。

個人的に、あの仕組み、よく分からんのですよ…。ラスター単位で上手いことやればできるよーと先輩に教えてもらった記憶はあるのだけど、具体的にどういう処理をすればそうなるのか分かってなくて。

気になり始めてググってみたところ、一応、解説ページは見かけたのですが。

_Lou's Pseudo 3d Page
_Code inComplete - How to build a racing game
_Code inComplete - How to build a racing game - straight roads
_Code inComplete - How to build a racing game - curves
_Code inComplete - How to build a racing game - hills
_Code inComplete - How to build a racing game - conclusion

英文ページなので、何が何やら。

とりあえず、まっすぐな道路なら、以下のような仕組みで表現できそうかなと思えたので、DXRuby で実験開始。 *1

raster_drive_ss1.gif

raster_drive_ss2.gif


_raster_drive.rb
require 'dxruby'

font = Font.new(24)

imgs = Image.loadTiles("road_bg.png", 1, 480)
bgimg = Image.load("road_bg.png")

Window.bgcolor = [68, 97, 255]
mode = 0
bz = 0
start_y = 1

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

  # Zキーで描画を変更
  mode = (mode + 1) % 6 if Input.keyPush?(K_Z)

  case mode
  when 0
    Window.draw(-320, 0, bgimg)
    Window.drawFont(4, 4, "BG全体を描画", font)

  when 1
    start_y.step(240-1, 1) { |y|
      i = y
      Window.draw(-320, y + 240, imgs[i])
    }
    Window.drawFont(4, 4, "上半分だけ描画", font)

  when 2
    start_y.step(240-1, 1) { |y|
      i = y + 240
      Window.draw(-320, y + 240, imgs[i])
    }
    Window.drawFont(4, 4, "下半分だけ描画", font)

  when 3
    start_y.step(240-1, 1) { |y|
      i = y + 240 * ((y / 16) & 0x01)
      Window.draw(-320, y + 240, imgs[i])
    }
    Window.drawFont(4, 4, "上と下を、ラスター単位で交互に描画 (一定間隔)", font)

  when 4
    sz = 320
    h = 240
    start_y.step(240-1, 1) { |y|
      z = (h * sz / y) # y座標毎のz値を求める
      i = y + 240 * ((z.to_i / 128) & 0x01)
      Window.draw(-320, y + 240, imgs[i])
    }
    Window.drawFont(4, 4, "上と下を、ラスター単位で交互に描画 (z値に基づく)", font)

  when 5
    sz = 320
    h = 240
    start_y.step(240-1, 1) { |y|
      z = (h * sz / y) + bz
      i = y + 240 * ((z.to_i / 128) & 0x01)
      Window.draw(-320, y + 240, imgs[i])
    }
    Window.drawFont(4, 4, "上と下を、ラスター単位で交互に描画 (z値を加算)", font)
    bz += 8
  end
end
背景画像は以下。

road_bg.png

スクリプトを実行して、Zキーを押していけば描画が変わります。

ちなみに、z値は以下の式で求められます。
h : 視点の高さ
sz : 視点からスクリーンまでの距離
y : スクリーン上のy座標

z = h * sz / y
_Code inComplete - How to build a racing game - straight roads の図が分かりやすい、かもしれず。

さて、ストレートな道路なら、これでなんとかなりそうだけど。カーブや丘は、どう表現すればいいのやら…。
*1: レースゲーム・ドライブゲームと言えば3DCGで表現するのが当たり前になってしまったこの御時勢に、自分は一体何をやってるのかという気もするけれど。仕組みが気になり始めてしまったのだから仕方ない。考えてみたら、30〜40年前の技術、というか工夫なんだよなあ…。

2013/06/25(火) [n年前の日記]

#1 [nitijyou] 自宅サーバ止めてました

雷が鳴ったので、16:30-19:05の間、自宅サーバを止めてました。申し訳ないです。

#2 [ruby] RSenseがサービス登録できない

Windows7 x64 + Ruby 1.9.3 p429 mingw + win32-service 0.8.0 の環境上で、RSense 0.3 がサービスとして登録できず。

管理者として開いたコマンドプロンプト上で、ruby bin\rsense service create は実行できるし、Winodwsのサービス一覧にも「RSense」の名前が見えるのだけど。ruby bin\rsense service start をするとエラーが出てしまう。
> ruby %RSENSE_HOME%\bin\rsense service start

C:/ruby193mingw/lib/ruby/gems/1.9.1/gems/win32-service-0.8.0/lib/win32/windows/helper.rb:36:in `raise_windows_error': No such file or directory - StartService:
The system cannot find the file specified. (Errno::ENOENT)
        from C:/ruby193mingw/lib/ruby/gems/1.9.1/gems/win32-service-0.8.0/lib/win32/service.rb:726:in `start'
        from C:/home/hogeuser/rsense-0.3/bin/rsense:246:in `exec_command'
        from C:/home/hogeuser/rsense-0.3/bin/rsense:288:in `process'
        from C:/home/hogeuser/rsense-0.3/bin/rsense:297:in `<main>'

RSenseインストールフォルダ\bin\rsense の 227行目、rubyw.exe の指定がアレだったらしい。
        command = Shellwords.unshellwords %W(rubyw.exe #{path}/bin/rsense --config=#@config service daemon)
        command = Shellwords.unshellwords %W(C:\\ruby193mingw\\bin\\rubyw.exe #{path}/bin/rsense --config=#@config service daemon)
rubyw.exe の場所をキッチリ指定したら動くようになった。

本来は環境変数PATHあたりに rubyw.exe のある場所を追加しておくべきかもしれないのだけど、Ruby のバージョンを切り替えて動作確認したいがために、そのあたりは _pik に任せていて、PATH には追加していないわけで。その関係でマズいことになるのかもしれず。

#3 [prog] NetBeans 7.3.1をインストール

全部入り版をインストール後、Ruby用のプラグインもインストール。

以下のページが参考になりました。ありがたや。

_NetBeans 7.3にRuby on Railsプラグインをインストールする手順 - Rails 雑感 - Ruby on Rails with OIAX
^ zip をDL・解凍して、ダウンロード済みプラグインとしてインストールするらしく。すんなり入りました。

#4 [emacs] NTEmacsでRubyスクリプトを書いてたり

ファイル更新時のタイムスタンプをファイルの頭のあたりに自動で記述してほしいわけで。そういうことをしてくれるのは、emacs か xyzzy ぐらいしか無くて。…NetBeans あたりもそういうことをしてくれるとありがたいのだけど、プラグイン等でそういう機能を追加できないのだろうか…。

emacs の Ruby-mode も、ちょっとしっくりこないところがあって。グローバル変数とそれ以外の変数で色を変えてほしいのだけど…。

replace系のコマンドもしっくりこなくて。カーソル位置の単語を取り込む機能とか無いのかな…。xyzzy で慣れてしまっているので、そのへん不便。

#5 [nitijyou] 首が痛い

首の後ろの左側のあたりが昨日からずっと痛くて。寝れば治るかなと思ったけれど、どうも改善せず。

#6 [anime] 刀語、録画失敗してた

見れなかった…。残念です…。

放送時間に変更があったみたいなのだけど、手持ちの東芝製HDDレコーダは、どうも地上波放送だと今回のように放送時間変更等に追従してくれない時があるような。東芝製HDDレコーダの仕様だろうか? それとも、地上波デジタル放送は、そもそもそういうことはできないのだろうか? あるいは、シリーズ録画設定(おまかせ録画予約設定)にしてたせいだろうか? 以前も怪しい動作をしていたし…。

BS放送なら、それなりに追従してくれた瞬間をたしかに目撃した記憶があるのだけど。地上波については…。なんだか謎な動作です。

それはともかく、「BANDAIチャンネルあたりで1話単位で視聴できないのかな」と思って探したものの、一切扱ってなくて。ノイタミナ枠はバンダイで扱えない状態になってるのかな。TV局がガッチリ絡んでる番組だろうし…。でも、刀語自体は、元々ノイタミナじゃなかったような…? どうなってるんだろう…。

2012/06/25(月) [n年前の日記]

#1 [dtm][hns] Dmoinoをまだ勉強中

まだ勉強中。

何かの拍子に VSTi の音が鳴らなくなってしまった。その後、VSTHost も Domino も、起動後に再生ボタンを押すだけで必ず不正終了。かなり焦る。…OS再起動したら音が出るようになった。助かった。もしかすると MIDI Yoke あたりが変な動作をしてたのかしら?

とりあえず、 _こんな感じ(ogg) _(mp3) のループサウンドを作成したり。ドラムは DSK mini DRUMZ 2 だけど、それ以外は全部 Synth1 で。

無料で使えるソフトで、自分のようなド素人ですら、このぐらい遊べる(?)のだから、環境としては十分過ぎる気がする。ありがたや。これなら、お小遣いの少ない小中学生さんでも、PCさえあればチャレンジできるだろうし。

別に学生さんが個人でやり始めなくても、音楽の授業等で、DTM実習でも用意されていれば、それだけでいいんだろうけど。そのへんどうなんだろうか。

HTML5のaudioタグを貼り付けられるか実験。 :



貼れたかな? どうかな?

hnf内で、以下のように書いてる、とメモ。
 TAG <audio controls loop preload="none"><source src="http://hoge/fuga.mp3" type="audio/mp3" /><source src="http://hoge/fuga.ogg" type="audio/ogg" />HTML5 audio not supported</audio>
TAGコマンド(HTMLを直接書けるコマンド)は、hnsのソースを弄って追加しないといけない…はず。

昔を思い出したり。 :

中学生の頃、音楽の教科書の楽譜を見ながら、MZ-700上でMMLを打ち込んだりしてたっけな…。C4D4E4、みたいな。矩形波が1音しか出なかったので、3音出せるPSG搭載パソコンに憧れたものです。…1音しか出せないはずのMZ-700で、波形合成による3和音が鳴った時は、感動したっけ。 *1

今ではこんな音まで出せるのだから、イイ時代になった。もう、「サンダーフォース」が「ワウワウオー」に聞こえたりしない。いや、今は逆に、エフェクトでわざとそう聞こえるよう調整する時代か…。イイ時代になった。

2017/03/19追記。 :

Dropboxのpublicフォルダが死んだのでファイルの置き場所を変更。

*1: でも、それっきり、そっち方面には手をつけなかったけど。X1-turboを入手した頃には、すっかり熱が冷めてた記憶が。

#2 [nitijyou] 夜になったら寒くなってきた

室温18度。脳が最も活動しやすい温度、らしいのだけど。体は寒い。

2011/06/25() [n年前の日記]

#1 [nitijyou] Amazonから色々届いた

注文してた品が届いた。

ペットボトル専用加圧式スプレーノズル、というのは、ペットボトルをノズルの下につけて、レバーをシャコシャコ動かしてペットボトル内の空気圧を高めることでスプレーができる、という品らしく。網戸を掃除するのに使えるかもと思って購入。

ニューペットボトルブラシ、というのは、ペットボトルの口にブラシをつけて掃除に使う道具。窓の周辺を掃除するために購入。

ペットボトルの空きがないので、入手したらそれぞれを試そう…。

「カセットテープをMP3に変換するプレーヤー」は、名前の通りの品。部屋で埃を被っているカセットテープをデジタルデータにして、カセットテープはさっさと捨ててしまおうと思ったわけで。

電源は一応USB接続だけで足りているように見える。また、電池を入れれば単体で簡易(?)カセットプレイヤーとしても使えるらしい。

PC側からはUSBオーディオとして見えているので、録音ソフトは何でもヨサゲ。自分はAudacityで録音してみた。 *1 添付のソフトはインストールしなかった。


ちと気になったのは、早送りと巻き戻しボタンがついているのに、巻き戻ししかできない/早送りができなかったこと。初期不良品を掴んでしまったのだろうか? それとも最初からこういう仕様なのか? あるいはテープによって回転時の抵抗が違っていて、早送りできたりできなかったりするのだろうか?

10分ぐらい長さのカセットテープを2本ほど取り込んでみたけれど。 せっかく機器を買ってはみたけど。実際に作業をしてみて分かった。この作業はやるだけ無駄だ。無意味だ。面倒臭い思いをして、質の悪いデータしか残らない。とてもじゃないけど、やってられない。アホらしい。

ということで、カセットテープは中身を確認せずに全部捨てることにした。
*1: Audacityで録音した際に入力した音をモニターできなくて悩んだけど。編集→設定→録音→ソフトウェアによるスルー再生、にチェックを入れたら音がモニターできるようになった。

#2 [cg_tools] blender 2.58をインストールしてみた

安定版として2.58が公開されたらしいのでインストール。また、Freestyleなるものを含んだ版を使うとトゥーンレンダリング?っぽいことができるらしいので、そちらもインストール。

ちなみに自分の環境は、Windows XP Home SP3。32bit版。

2.58 は、 _blender.org - Get Blender から blender-2.58-windows32.zip をDL。

freestyle同梱(?)の 2.57.1版は、 _GraphicAll.org_左側 から、Freestyle_r36283-Win32_2.57.0 を辿っていって、1476_freestyle_r37759__2-57-1.7z をDL。 _チュートリアル - blenderやら、なにやら を参考にして試してみたり。

普段は Python 2.7.x を使っているので、blender実行時のみ、Python 3.x.x をpathに追加しないといけない。blender_start.bat というバッチファイルを作成して、
set PATH=C:\Python32;%PATH%
"C:\Program Files\blender-2.58-windows32\blender.exe"
pause
みたいな感じに。blender を実行するときは、blender_start.bat を実行するようにした。

#3 [nitijyou] 左脇腹が痛い

数日前から痛かったけど、今日になって特に痛くなってきた。首の両脇は痛いし、鎖骨のすぐ下のあたりも痛いし、左脇腹も痛い。何なんだろう…。

2010/06/25(金) [n年前の日記]

#1 [nitijyou] 蚊取り線香をつけておいた部屋で寝ると必ず悪夢を見るのだが

昨晩、部屋の中に蚊が入ってしまったので、蚊取り線香をつけたのだけど。やっぱり悪夢を見た。

考えてみれば、当たり前かもしれない。虫を殺せるほどに特定の化学物質が充満した部屋に居て、人間が何の影響も受けないと考えるほうが無理がある。ような気もする。

虫の体に比べて、人間の体は大きいから、別に死んだりはしないだろうけど。やはり神経に何か影響があるのだろう。微妙にダメージを受けている・わずかでもストレスを感じているのではあるまいか。

特に、快眠を得るというのは難しいことだし。 些細なことから悪夢に繋がっていく。

蚊取り線香以外に、蚊を効果的に退治できる方法はないものだろうか。何か別のモノにおびき寄せてから…。いや、おびき寄せるということは、本来そこに集まるはずではなかった蚊まで集めてしまうということだろうし、当然その近くに居る人間もたまたま飛んできた蚊に被害を与えられてしまうだろう。何か上手い手はないものか。

#2 [pc] 結局PCケースを注文してしまった

IW-BK623のPCIスロットのあたりに排気ファンを追加して冷却できないものかと検索して調べてみたのだけど。ダメだ。無理だ。どうやっても、HDD周辺を冷却するのは無理なように思えてきた。ビデオカード周辺は冷えるかもしれない。しかしHDD周辺まで改善できるかと言うと、その可能性はかなり低いように思える。…ひょっとして、ビデオカードのファンが、まだ排気タイプであれば、光明が見えただろうか?

大体にして、IW-BK623のマイナーチェンジ版と言われる IW-BK646W に至っては、HDD部分の上に8cmファンを追加するという変更点すらあるわけで。要するに、そのままではHDD冷却がほとんど出来ないことが判明したので、HDD冷却専用のファンをつけてしまったということだろう。つまり IW-BK623 は、そのままではHDD冷却に関して問題があるケースなのだ。

考えてみれば、IW-BK623 が採用したSFF規格というモノは、元々Intelが「こういう構造で作ることもできなくはないと思うよ?」と、あくまで一つの参考事例・サンプル・可能性として図を提示しただけと聞いている。言わば、活用事例が実存していない、活躍想像図みたいなものだ。であれば、このケースの制約もうっすらと見えてくる。
  1. Intelが提唱した規格 = 使用ビデオチップには当然ながらIntel製を想定しているはず。
  2. ということは、結構な熱を発するビデオカードの増設などはほとんど考えていない。オンボードビデオチップを利用することが前提。
  3. だってIntelは、ビデオカードでの増設を念頭に置いたビデオチップなんて出してないから。
このケースは、あくまで、オンボードビデオチップのみ利用する形で組めば、実用になるケースなのだろう。

ということで、フツーのミニタワーのMicroATXケースを購入することに決めた。パソコン工房のサイトで物色して注文。

SST-ST45SF を買ったのは、無駄だったのだろうか。いや、試してみないと分からないこともあるよな。
  1. それなりの性能のPCをMicroATXで組むなら、フツーのケースを選ぶしかない。設置スペースを何としても確保せよ。
  2. 省スペースなケースを選ぶときは、性能を犠牲にする覚悟が必要。
  3. 省スペースで、かつ、それなりの性能を、などというのは絵に描いた餅。
それを経験から学ぶための、授業料だったのだ…。

でも、MicroATXではなく、Mini-ITXを選んで、ケースは SilverStone SST-SG05B を、電源は SST-ST45SF を選べば、冷却面も性能も、どうにかなるのかもしれない。SST-SG05B なら、前面に吸気用12cmファンがついてるし、ケースの後ろのほうは穴だらけなので、HDDを冷却した風がCPUやビデオカードの側まで行って、穴から熱い空気が全部で出ていって上手くいく可能性がある。拡張性はほとんどないが、そこだけ目を瞑れば、結構ヨサゲなPCが組めるのではなかろうか。いやまあ、もう面倒臭いし、お金も無いからそこまで試さないけど。

2009/06/25(木) [n年前の日記]

#1 [nitijyou] Amazonに某ゲームを注文

今時入手できるのかな。どうなんだろう。

振込すべく外出しようかと思っていたけど。急激な腹痛に襲われて外出を控えたり。

#2 [zatta][neta] 「レイプレイ」のソレってなんか話がおかしい気がする

国内市場のみを対象にしていたはずの商品が比較的容易に海外でも入手できてしまうというところが最初の問題ではないのか、という気がしていて。つまりは流通の問題のような気がする。そこは誰も叩いてないように見えるのがちょっと気になる。

まあ、知識の無い人達から「シミュレーター」みたいな扱いをされちゃうのもマズイ気もするのだけど。これのどこがシミュレーターやねん、と周囲がツッコんでくれるような作り・構成にしておく、みたいな方法もあるのだろうか。どういう作りにすればいいのかちょっと思いつかないけど。…そういや、母乳で縄跳びしてるフィギュアがバカみたいな値段で売れた、てなニュースをどこかで聞いた記憶もあるなあ。であれば、これは現代アート、みたいな雰囲気を出すことができたら、それはそれで通ってしまうのだろうか?

それと、Wikipediaのソレを読むと、どうも件のソレには女性人権団体なるものが噛みついてる場面が多いらしいのだけど。であれば、やるべきことは、女性を蹂躙するゲームと同数の、男性を蹂躙するゲームを製造販売を行うこと、ではないのだろうかと。女性ゲームキャラの人権が侵害されているなら、それと同数の男性ゲームキャラの人権を侵害すればバランスが取れるだろうと。

つか、創作物の中のキャラの人権を守ろうとするなんて頭おかしいんじゃないか、という気もするんだけど。その論理で行けば、宮崎駿監督は、映画の中で大量に殺人をした大犯罪者だし、富野監督に至っては全人類を殺傷してしまった大犯罪者になってしまう。ナウシカももののけ姫もガンダムもイデオンも、この社会から抹殺しないといけないことになる。DVDで製造販売なんてもってのほか、になってしまうのではないか。

2008/06/25(水) [n年前の日記]

#1 [game][neta] 社交ダンスのゲームって作れないかな

NHKをBGVにして作業していたら社交ダンスの番組が始まった。複雑な動きだ…。格闘ゲームのモーションのように見える。というか足の動きを覚えるだけでも一苦労な予感。…足が本来動いていく場所に、アナログコントローラでカーソルを次々と移動して、という感じでゲームにできんかな。でも、誰がそれで遊ぶんだという話も。

舞台はイギリス、かつ、貴族が社交ダンスを踊ってるのが当たり前、てな時代設定のゲームはどうか。「エマ」みたいな世界。社交ダンスがまともに踊れないとその階級の中でひどい目に会うのです=ゲームをクリアできないのです。嘘。どんなゲームやねん。

#2 [scheme] Schemeをインストール

勉強用に。GIMPのスクリプトを書くときに知識が必要になるらしくて、前から気になってたわけで。

以前、MzSchemeをインストールしていたみたいではある。>自分。C:\usr\local\以下に入ってた。アンインストール方法がわからん…。

MIT/GNU Schemeをインストールしてみたり :

_MIT/GNU Scheme - GNU Project - Free Software Foundation (FSF)

インストールすると「プログラムの追加と削除」に項目が並ぶので、アンインストールも簡単。

_Scheme 入門 1. Scheme 処理系のインストール :

参考にしながら勉強。MIT/GNU Scheme をインストールすると4つのショートカットファイルが、と書いてあるけど、現状では一つしかショートカットが作られないらしい。Edwin という emacsっぽいエディタが開く。C-x C-e で最後の式?を実行できるらしい?

scheme.ini は作らない方向で作業。

xyzzyのscheme-modeで使えるように設定する方法が分からない。 :

_xyzzy - WikiWikiFun を参考にして、~/.xyzzy に、
(load-library "scheme-mode")
(push '(".scm$" . scheme-mode) *auto-mode-alist*)

;; MIT/GNU Scheme
(setf *scheme-process-open-hook*
      #'(lambda (buffer)
          (if (buffer-process)
              (buffer-process)
            (progn
              (set-buffer buffer)
              (make-process
               (format
                nil "\"~A\""
                (map-slash-to-backslash "C:/usr/local/MIT-GNU_Scheme/bin/scheme.exe")))))))
と書いてみたんだけど。make-scheme-scratch の (+ 1 2) の C-RET したらエラーが出る。うーん。

_Command-Line Options - MIT/GNU Scheme 7.7.90+ を参考にすればどうにかなるのだろうか。英語わからん。

Gaucheも気になるのだけど。 :

_Gauche - A Scheme Interpreter
_[Think IT] 第1回:Gaucheをはじめてみませんか? (2/3)

Windows用のバイナリはまだ難あり、ということらしくて。うーん。cygwin 入れてまで勉強するものなのか、という気もするし。うーん。いや。あくまで勉強用、としての範疇であれば、実験用バイナリとやらでも全然OKなのかしらん。よくわからんです。

勉強用、と割り切って実験用バイナリを入れてみた。zipを解凍して c:\usr\local\ 以下にフォルダをコピー。xyzzy の scheme-mode で使えるように ~/.xyzzy を修正。

xyzzy 上で Scheme を勉強する = Gauche を勉強する、と割り切ることに。MIT/GNU Scheme を勉強する時は Edwin 上で、ということにしようかなと。

#3 [scheme][neta] Lisp だの Scheme だのが不人気なのはどれをインストールすれば良さそうなのかさっぱりわからないから

という電波が。

どれをインストールして勉強すればいいのかわからない=特定の環境上でスクリプトを書けるようになっても他で使えるかどうか不明=勉強する意味がどれだけあるのかと考えてしまってやる気消滅、みたいな。や、わからんですけど。

Emacs lisp 用に書いたものは、 xyzzy lisp で使えないし。xyzzy lisp 用に書いたものは script-fu で使えないし。Gauche 用に書いたものは Tiny-fu で使えないし。「これで勉強しとけば後々役に立つ」というのが薄そうなのはどうなんだろうなと。「いやいや、基本は同じですよ」と言うこともできるのかもしれないけど、それを言っちゃったら「a = b + 1」といった形でかける basic も C も Java も Ruby も Python も Perl も皆同じ言語ですよ、ぐらいのことが言えてしまうのではないかという気もしたりしなかったり。

日本国内では Gauche の人気が微妙に高いように見受けられるのだけど Windows で使うには難易度が高いのもどうなのかとなんとなく。これでは初心者に「悩む必要ないやん。Gauche でやればええやん」と言い切ることもできないではないか。みたいな。

…要するに、Scheme を勉強しようと思っただけなのに、MzScheme、MIT/GNU Scheme、Gauche と3つも入れる羽目になったこの状況はなんだかなと思ってしまったというだけの話なのでした。 *1
*1: つか入門系サイトを眺めてみたら、「どれをインストールすればいいのかわからない」云々が不人気の理由ではないよなと思えてきました。これは天才秀才しか触れちゃいけない言語なのかもしれない。何がなんだかさっぱりわからん。なんでループ処理を再帰で…。再帰で書かれたものをジャンプ命令に置き換えて最適化して動くなんて、本末転倒じゃないのか。言語の構文木を人間が意識して書けるってのもどうなんだろう。ある意味アセンブラで書くのと変わらんのじゃないのか。人間が楽しようという思想が根本的なところでスポンと抜けてる感が…。頭の中がコンピュータと同化した人間じゃないと使えない言語なのでは…。こんなの凡人には無理だ…。

2007/06/25(月) [n年前の日記]

#1 [zatta] 黒板をデジカメで写したらいかんのかな

夢を見た。自分が学生になって、授業を受けてる夢。

先生が黒板に字を書いていく。自分は必死にノートに写す。ノートから黒板に視線を戻して愕然とする。ほとんど消されてる…。教科書には載ってない情報ばかりだったのに。この先生、爆速で書いて爆速で消すタイプか。しかもこのタイプはレイアウトがグチャグチャでノートも取りづらいんだよな。一体何を考えてこういう書き方をしてるんだ。ふざけんな。…ふと。自分のベルトにぶら下げていた、デジカメと携帯電話の存在に気づいた。そうだ。コレを使えば…。携帯電話のカメラよりはデジカメのほうがいいか。携帯のソレはボケるし。デジカメを使った場合の問題は、教室が暗いから自動でフラッシュが光ってしまうことと、シャッター音がなってしまうことか。しかしその2点は設定次第で解決できる。最大の問題は解像度が足りるかどうか。でも、ノートをまったくとれないよりは、はるかにマシだろう…。

などと悩んでるところで目が覚めた。

起きたばかりの頭でぼんやり思った。おそらくその後の展開としては、デジカメを使ってる自分を先生が見つけてデジカメは没収される → 「だったら、ノートをとれる速度で書いてくれ」等、先生に抗議 → 「お前のノートの取り方が悪い」「重要なところだけメモしないからだ」と先生から一蹴 → 自分、黙り込むが、心の中で「初見の情報を重要かどうか判断できるだけの知識があったら、そもそもお前の授業なんか受けてねえだろ、馬鹿野郎」とムカムカ。とかそんな理不尽な展開になって、夢の中で憤慨してただろうな。

何のために黒板に字を書いて授業をするんだろう。 :

教科書に書いてある内容なら、教科書を参照させればいいわけだし。教科書に書いてなくて、かつ、ざっと眺めるだけでいい情報なら、スライドでいいだろう。教科書に書いてなくて、かつ、重要な情報なら、プリントを作成・配布すべき場面だろうし。

教育関係は素人の自分だけど、ぼんやり考えただけでも、授業の中には、理解・記憶・実践・その他の要素が入り混じってる気がする。黒板に字を書いて、生徒に見せ、ノートにとらせるというのは、どのあたりの要素なのか。

たとえばこれが、IT関係のイベントだったら、プレゼン時間中に黒板 or ホワイトボードに字を書いてる人は居ないだろうと。貴重なプレゼン時間を消費して、聴衆に背を向けて、ホワイトボードにせっせと字を書く。そんなアホなことしてる人は居ないだろう。たぶん。いや、その手のイベントは見たことないから知らんけど。でも大体は PowerPoint 等で見せていくんじゃないの? もっとも、その手のプレゼンは「紹介」であって、理解・記憶・実践ではないだろうから、単純に学校のソレと比較するわけにもいかんか。いや、しかし、あくまで「紹介」のレベルで済む内容も、授業の中には混じってたりしないか。

生徒一人一人がPCを使えて当たり前な状況であれば。先生は、PowerPoint ファイルを作成・配布するだけで済みそうな。黒板に字を書く場面なんてほとんどなくなる、ような気もする。問題はコストか。黒板は電気代食わんし。生徒一人一人にPCを配布するなんてのも厳しそう。給食費すら払えない家庭があったりするらしいから、家庭側に準備させるのは無理だろうし。かといって、教育費が削られてる日本において、学校側が用意するなんてのも、たぶん無理だ。

そもそも、CPUクロックがまったく異なる40人だかの子供相手に、同じ所要時間で、同容量の情報を突っ込もうという行為自体に無理があるけど。そこもまたコストの問題なのか。

黒板をPCの画面と捉えると、 :

ノートに取るというのはキャプチャする行為、なのかな。

Webページの情報を手元の紙にメモしようとしたら、Webページが自動でリフレッシュ。そりゃブチ切れる。その瞬間の画面をキャプチャするべく、ツールの導入を検討せざるをえない。

一旦、すべての画面をキャプチャして、後でじっくり、どの情報が必要な情報なのかをフィルタリングする、という手順もあるように思える。いや、キャプチャした段階で、「いつでもこの情報にアクセスできる」と思って放置しちゃう可能性もあるんだけど。

_無重力実験とアニメについて:コラム:講義方法に普遍性はない、と思う(黒板をノートへ書くことに意義はあるか) :

なんだか関係ありそうな記事。

_アニメ中学理科 ver2.6 :

「電子黒板」という単語がページ中にあって、気になった。

_電子黒板 | 松下電器 ビジネスサイト :

#2 [anime] アニメにおける黒板

「電脳コイル」を見ていて不思議に思ったのは、先生が黒板に字を書いているところ。電脳メガネが普及した世界なのに、なぜ黒板にあえて字を書くのか。もっともそのへんは、小学校の授業という雰囲気を強調するための演出なのかな、とも思うけど。…実際に電脳メガネがあったら、生徒一人一人の理解度に合わせた学習が可能だろうな。先生は、机の間を歩いて、詰まってる生徒に対してサポートする、といった感じの授業風景もありえそうな予感。

以前、NHKで放映された「学園戦記ムリョウ」では、生徒一人一人に授業用のPCが与えられた世界。だったかしら。電脳メガネより技術レベルは劣ってるはずだけど、そちらでは、もうちょっと違う感じの授業の風景、だったようなおぼろげな記憶も。いや、記憶がさだかではないのだけど。でも、公式サイトに、授業のスタイルが今とはちょっと違う、みたいな設定が書かれてたような記憶もあるような。

EVAの授業風景はどうだっただろう。黒板があったのは覚えてるんだけど。…ガイナックス系の作品は、あえて、昔ながらの黒板の使い方を描写することが多かったりするのだろうか。

_学園戦記ムリョウ:オフィシャルサイト - 監督創作メモ :

No.34 あたりがそのへんの設定、かしら。教科書もダウンロード配信ってのは、なんだかイカス。

_DIGITAL DJ : 黒板でストップモーション・アニメ :

レイヤーが違う、アニメと黒板の話。

_ネギま!?のアニメの黒板ネタに関しての考察 :

これもレイヤーが違う。

#3 [zatta] _中年童貞…なぜ生まれる? 「恋愛資本主義」の肥大化

メモ。

2006/06/25() [n年前の日記]

#1 [windows] 7z.exe でフォルダを圧縮するのって

7z a -tzip -mx9 hoge.zip DirectoryName
でいいのだろうか。コマンドラインで圧縮ツールを使ったことってあまりないのでよくわからなかったり。

いいみたい。一応圧縮できてるように見える。iアプリの開発用フォルダを圧縮してバックアップ。

この記事へのツッコミ

Re: 7z.exe でフォルダを圧縮するのって by こぶん    2006/07/03 17:22
1.再帰的に指定フォルダ内のフォルダも圧縮したい場合は、こうですね。
7z a -tzip -mx=9 -r ArchiveName FolderName

2.書庫にトップフォルダを含ませたくない場合は
cd FolderName && 7z a -tzip -mx=9 -r ..\ArchiveName . && cd ..
とすると良いでしょう。

1.では次のように格納されます
FolderName/a
FolderName/b
FolderName/c
....
FolderName/SubFolder
FolderName/SubFolder/a
...
2.では
a
b
c
...
SubFolder
SubFolder/a
...
7z.exe でフォルダ圧縮 by mieki256    2006/07/07 08:27
> 7z a -tzip -mx=9 -r ArchiveName FolderName

ありがとうございます!
なるほど、-r が再帰的に処理してくれるオプションでしたか…φ(..)メモメモ

> cd FolderName && 7z a -tzip -mx=9 -r ..\ArchiveName . && cd ..

「&&」なる書き方は知りませんでした。早速検索…。
なるほど、前のコマンドが成功したら後ろのコマンドを実行するのか…
こんな機能があったとは…

#2 [nitijyou] チラシをhtmlにしてほしいという

要求がktから。

自分、シングルタスクだからちと厳しいな…。

#3 [anime] HDDに溜まってたアニメを鑑賞

と言っても作業しながらのBGVなので話はほとんど覚えてない。とりあえず消化しておかないとHDD容量が…。

チャングム。貝の皿の回と、船に乗ってどこかに旅に出る回。どうして貝なのか、とか、どこに行くのか、とか、そのへんちゃんと見てないから知らないけど。見習い女官が袋詰めにされてさらわれたあたりで、「でた! 朝鮮半島お得意の拉致行為!」と不遜なことを。…ギャグ担当のボディガードの人が、かなりカッコいいところを見せていてグー。こういうギャップはベタでもいいから入れないと。アクションシーンの作画もかなり頑張ってるなと。

ケロロ軍曹。お蝶婦人の回とツバメの回と巨大化の回と自販機の回と紺ガエルの必殺技の回。連続巨大化に感心。巨大化するというそのシチュエーションは、ウルトラマン等他作品においては高揚感のあるシーンなわけだけど、それが同じレイアウトで息もつかせず何度も出てくることによってギャグになり、他作品の真面目なイメージのソレもどこか付随して、類まれなる異常な展開になっていくあたりが秀逸。ちょうどウルトラマンから卒業したぐらい、な年齢の視聴者なら、TVの前で腹を抱えて笑い転げるのではなかろうかと想像。

BJ、撃たれる回。オチは予想がつくけど、ヒキは上手いなと。

NANA、お金がない話と総集編。ドラムの人が登場する際、ドラムスティック?を持って現れるのが気になった。田舎から、ずっとスティックを持ったままで上京したのだろうか。周囲にとってはアレな人に見えそう。ドラマーだからドラムスティックを持って登場する、なら、プログラマーだったら絶えずキーボードを小脇に抱えて登場しないといかんことになるのか。その場合、 _Happy Hacking Keyboard あたりが適任アイテムかもしれぬ。小さいし、マニアックだし。「Linus…Linuxは、あんたが作ったOSだろ…」「ああ…心配で夜も眠れねえ…」とかそんな感じのやり取りになったり。しないわな。…Linus氏はどんなキーボードを使ってるのか知りませんけど。

SAMURAI7。村に入って嫌がられるところまで流した。あの世界では、侍と農民は結婚できるのだろうか。商人と農民は不釣合い云々と言ってたりもするので、なんだか見ていてモヤモヤ。

2005/06/25() [n年前の日記]

#1 [zatta] _新人はスケジューリングをしない

質問の仕方を知らない
「教わっていないからできない」という
開発案件がどうやって利益を得ているか知らない
教わったビジネスマナーしか分からない
メールの書き方を知らない
スケジューリングをしない
読んでいて、自分自身が冷や汗。 _(via たまにっき。)

#2 [digital] _ZOX ZTO-217 7インチ液晶テレビ 税込9999円

これでPCが接続できれば買うんだけど。うーむ。サーバのメンテナンス用にこのサイズが欲しい。

この記事へのツッコミ

Re: ZOX ZTO-217 7インチ液晶テレビ 税込9999円 by Y    2005/06/27 22:07
http://www.aziandoor.com/

PC用だと小さいのって高いんですよね。
15インチの特価品が一番安いんですけど案外場所
取りますし・・・
Re: ZOX ZTO-217 7インチ液晶テレビ 税込9999円 by mieki256    2005/06/28 23:08
> PC用だと小さいのって高い

リンク先を見ましたが、たしかにこりゃ高いですな…
需要が無いから高くなるのかしら。
わざわざ小さいディスプレイで見たい人は居ないだろうし。うーむ。

パチンコの台に使われてるような液晶がPCにつけられたらなぁ、
などと時々夢想してたのですが、調べてみると、
中古のユニット購入・自作のほうがコストもかかるみたいで。
なかなか難しいであります。

ゲームボーイだのPSPだのの液晶に、PCの画面を出せないものかしら。
それも無理があるか…

#3 [digital] _シャッターが切れてから3秒後にフラッシュが光るらしいデジカメ

ADSS-02XS というデジカメらしい。ぶっちゃけありえない。
撮影枚数はフラッシュ無し連続撮影で約30〜40枚
オイラが持ってる太古のデジカメ、RICOH DC-4U よりは撮れるな…。DC-4U は20枚程度で電池なくなるから。

#4 [digital] _デジタルカメラ HDC-302SLIM

FAQを見たらPCカメラとしても使える旨が書いてあった。ちと気になる。でも、トイデジカメにしてはちと高い。

#5 [digital] _テレビ買うのは待つべし

_衝撃! 次世代DVDのハイビジョン映像があなたのテレビで見られない!?

気になる話。

#6 [digital] _サダコロボ

たしかに。不気味の谷に真っ向から挑戦してる感が。それにしても、
表情が豊かで自然なので、人に与える印象が優しい、というわけです。…しかし、結果として、このロボットを見た人が受ける印象は恐怖以外の何者でもありません。
…こういう展開になるあたりにモノ作りの面白さがあるというか怖さがあるというか何か複雑な気持ちになるというか。 _(via 読書記録ChangeLog)

全然関係ないけど「谷」つながりで :

「バカの谷」って _聖書 で使われてた言葉だったのだな。知らなかった。

#7 [zatta] _バイオニック・アーティフィシャル・アーム

脳から命令された電気信号がバイオニックアームに瞬時に伝わり自由意志で両手を動かすことができるようになった。
_Bionic Man Moves Artificial Arm With Brain

よくできたネタだなぁ。と思ったけど。スライドショーを見てるうちに実は本当なのかと思えてきた。が。ムービーを見たら全然動いてなかったのでやっぱりネタかもな。と思ったけど。ネタだったらもっとガンガン動かすだろうから本当の話なのかもしれない。さておき、日本ではこういう研究をしていないのだろうか。ASIMOの二足歩行技術を利用できないかと考えてしまったり。 _(via 読書記録ChangeLog)

#8 [cg_tools] _究極のモーションキャプチャー? - 脳から筋肉に伝達される電流を計測してモーションデータを取得

_ソリッドレイ研究所 / マッスルトーク

感動した。素晴らしい。

#9 [zatta] _市町村変遷パラパラ地図 - パラパラ漫画方式で市町村の変遷を見る

左側のフレームで、時期にマウスカーソルを合わせると、市町村合併の様子が判る。試しに _福島県 を眺めてみたけど、なるほどこんな風に変わっていったのか…。とても判りやすい。図で表すことの利点だなぁ。 _(via [戯])

#10 [zatta] _誤用とか指摘してる暇があったら「確信犯」に代わる何か別の言葉をさっさと作って広めてほしい

それもそうだ。と思ったのだが代わる言葉が思いつかない。 _(via 読書記録ChangeLog)

_かくしん-はん【確信犯】 :

道徳的・宗教的・政治的な信念に基づき、自らの行為を正しいと信じてなされる犯罪。思想犯・政治犯・国事犯など。
個人的にはこの定義がおかしいと思う。範囲が狭過ぎる。ほとんどの人が「確信犯」という言葉を「確信犯(誤用)」の意味で使ってるご時世に、いつまで「私が正しい定義でございます。フフン」とふんぞり返っているのだ。ということで「確信犯(誤用)」がこれらの定義に追加される時代が来ることを望んで、「確信犯(誤用)」を「確信犯」としてドンドン使っていきたい。…てのもアリかもしれん。

#11 [web][blog][jiji][neta] _学校でBlogを書く子供の前にはとても大きな障害が立ちはだかっている。それは学校そのものである。

そのような場においてBloggerとしてやっていくには確かに作法は必要になる。しかしその作法は学校という閉じた場にふさわしい物にしかになりえない。閉じた小さな世界で巻き起こる力の渦をなんとかやり過ごして行くための作法である。それは一般的にネットワーカーがネットリテラシーという言葉から連想するイメージとは正反対のもの、梅田望夫氏がコラム「「勉強能力」と「村の中での対人能力」」で提起した「村の中での対人能力」に近いものでしかありえないだろう。
もしかしたら、それこそが狙いなのかもしれないと、妙な妄想をしてしまったり。つまりは、 _サザンクロスシティに巣食うモヒカン を数で圧倒して掃討するための第一歩、なのかも。

小中学生総blogger化作戦が決行された数年後、ネット上は、「挨拶もなしにリンク or TB するなんてマナーがなってない!」とか、「重要データを外部の人間が閲覧するなんて信じられない! 人の家に無断で入るな!」とか、「学校で教わってこなかったのか!」とか、そういう感じの言で埋め尽くされているのかも。嘘。

#12 [comic] _いわみて

Web漫画。なのかしら。読んでて笑ってしまった。素晴らしい。…原作というか、オリジナルがあるのかしら。 _(via TokuLog!)

さておきおそらくは大学ノートあたりにザクザク描いてる感じがなんかいいなと思ったり :

大学時代、漫研でらくがきしてた時代を思い出してしまった。

当時、無地のノートって入手が難しくて。大学の購買部には、せいぜい方眼紙タイプしかなくて…。それに、学生だから金も無いし。画材屋に置いてあるような・デザイン科の人たちが使うような値段の高いモノは買えなかった。…周囲の人たちは結構普通の大学ノートに描いてたっけ。中には「罫線がないと描きづらい」とかそんな話もあったようなおぼろげな記憶も。自分は、「無地がいい」「無地でなきゃダメだ」と何故か思い込んでたので、小学生向けの「じゆうちょう」を近所の文房具屋で買って使ってた。表紙はアレだけど (・з・)キニシナイ! 実用主義でGo! …そういや、新入社員時代、職場で笑われたこともあったなぁ。いい歳した大人が「じゆうちょう」を持ち歩いてるのだもの。違和感あるよなぁ(苦笑)

会社に入ってからしばらくすると、「○○PAD」とかその手のヤツ ―― 1枚1枚をはがせる、方眼紙タイプのものを使うようになった。ヨサゲなものは別々に残しておけるし。ダメダメなのは捨てられるし。アイデア出しの場で提出もできるし。経済的にちと高目の文房具を買えるようになったし。東京勤務だから店頭でその手のモノが見つかるようになったし。仕事内容からして方眼紙タイプのほうが便利になってきたし。…というわけで、最後に買った「じゆうちょう」は、最初の数ページ以外は真っ白なままなのでした。つまりはそれだけ漫画絵をらくがきすることもめっきり少なくなったという。

まあ、ノート用紙に描かれた絵を見ると学生時代を思い出すと。それだけの話。

ふと思ったけど漫画原稿用紙のような印刷がされているノートを販売したら :

漫画家志望の少年少女たちに売れないかな。…なんだか既にありそうな気もするけど。

#13 [anime] SEED2、脱走の回

そろそろシャアが悪い人になってくるのだろうか。ワクワク。…別に悪い人ってわけじゃないような気もするけど。「謀ったな、シャア!」ってほどでもないし。

コーディネーターは演説なんかも得意なんだろうなぁ。そのへん関係してくる遺伝子も弄られているのだろうし。政治能力も高いに違いない。…自分があの世界でナチュラルだったら、ナチュラルが上に立つより、頭のいいコーディネーターに上に立ってもらいたいと思うだろうな。そのほうが楽だもん。日本人だから、水戸黄門が出現してくれると喜んじゃう、みたいな。

2004/06/25(金) [n年前の日記]

#1 [comic] 「のだめカンタービレ」(二ノ宮知子著)を読んだ

音大を舞台にした漫画。めっちゃ面白い。この作家さん、天才ですな。それにしても、「ぎゃぼーっ」とか「ムキャー」とか、イイ。

「GREEN」の作者さんだったのか。なるほど。…「GREEN」は未読なのだけど、仮に「のだめ〜」と同様の作風なら、先日目にした実写ドラマ版の演出方針もなんとなくわかるような気も。

#2 [cygwin] インストール中

日本語パッケージってどれを入れたらいいのかよーわからん。(;´Д`)

_Untitled: Cygwin アーカイブ :

日本語化についてまとめてくださってる。ありがたや…。

_ck - terminal emulator :

cygwin用のターミナルエミュレータです。
・半透明ウィンドウ(不透明なバージョンもあります)
・文字コードの自動判別によるShiftJIS, EUC-JP, UTF-8の混在表示が特徴です。
(・∀・) イイ!! 特に後者。文字化けが消えた。素晴らしい。

_w3mをcygwinで再コンパイル :

ありがたや…。

しかし、cvs版とやらを取得する方法がわからない。途中でパスワード入力を求められる。適当に打ったら怒られた。開発者じゃないと取得できないのかしら。よくわからないので、 _こちら からソースを取得。

コンパイルが通ったものの、w3mが起動するまで数分かかる。どうしたらええねん。make uninstall とか make distclean してから、 _こちら を参考にして、
 ./configure \
--enable-image=no \
--disable-xface \
--disable-mouse \
--disable-alarm \
--disable-nntp \
--disable-ipv6 \
--disable-w3mmailer
と打ってコンパイルしたら、少なくともすぐに起動するw3mになった。万歳。が、w3m起動後、オプション画面を出すと文字化けしてる。 _この問題 かしら。 _cvs-1.913で解決済み とある。やっぱりcvs版を入手しないとあかんのか。ぎゃぼーっ。

_こちら を読んでみたら、パスワードはEnterだけで良かったらしい。もう一度、最初の参考記事の通りに打ったら、~/w3m というディレクトリができて、 *1 その中にソース等が取得できたように見える。万歳。早速、コンパイル。…あかん。文字化け変わらず。

export LANG=ja_JP.EUC としたら、文字化けされなくなった。…これでいいのだろうか。

w3mのヘルプが出てこないのですが。「Viweing <w3mhelp.cgi> No Line」と出てくる。 _ActivePerl用にPERL5OPT=-MWildと指定してた *2 のがまずかったみたい。~/.bashrc に unset PERL5OPT と追加。w3mのヘルプが表示されるようになった。

ところで、cvsって何? (;´Д`)?

_バージョン管理システム CVS を使う :

後で読もう。

*1: たぶん、~/ で作業してたからだろうなぁ。
*2: _こちら も参照。

この記事へのツッコミ

Re: インストール中 by otsune    2004/06/26 13:05
w3mを起動してoでoption設定画面にいってDisplay EncodingとかもろもろをWindowsにあわせて見るのはどうでしょう?
Re: インストール中 by mieki256    2004/06/27 01:31
> Display EncodingとかもろもろをWindowsにあわせて見る

w3mに、そんな項目があったとは…(爆)
ありがとうございます。早速試してみるであります。

#3 [web] _TAG index/URLエンコード・デコードフォーム

<a name="二バイト文字で書かれた単語"> とか書いてる人がたまに居るんだけど。アレって問題はないのかしら。今回、 _こちらの方のページ にリンクしようとして不安になってしまったのだけど。いや、Windows + IE で閲覧だけする分にはジャンプできてますけど。 *1 どこかにこのあたりの仕組み・仕様を解説してるページがないものか。結構ブラウザが吸収してくれるのかな。だとすれば、かえってエンコードして記述しちゃうほうがまずいのか。でも、wikiとかはエンコードしたURLになってたりするし。うーん。
*1: hnf は euc-jp で記述してるから不安なのであります。と思ったけど、Windows + IE(Sleipnir)で見てる分にはジャンプできてる。先ほど導入したCygwin+w3mで見てみた。こっちはそこに飛ばない、が、元々飛ぶブラウザなのかどうかもわからないし。このページのHTMLソース中には、eucで二バイト文字が書かれてる。リンク先はJISで書かれてるみたいだ。

この記事へのツッコミ

Re: TAG index/URLエンコード・デコードフォーム by こぶん    2004/06/27 11:41
W3C勧告では、アンカー名(A要素のname属性、id属性)はASCII文字に限ることになってます。
非ASCII文字(不正なURI)が用いられていた場合にブラウザは、与えられた文字をUTF-8で表現し、そのバイトをURIエスケープする。という規則が推奨されています。
要するに、仮名漢字で指定されたアンカーやファイル名に飛べないものだと思ってかかれということです。
Re: TAG index/URLエンコード・デコードフォーム by mieki256    2004/06/28 01:16
> アンカー名(A要素のname属性、id属性)はASCII文字に限る
> 要するに、仮名漢字で指定されたアンカーやファイル名に飛べないものだと思ってかかれということ

ああ、やはり、そんな感じでありましたか。
おかげさまで、疑問氷解。すっきりしたでありますです。(´▽`)

> ブラウザは、与えられた文字をUTF-8で表現し、そのバイトをURIエスケープする

ということは、今のブラウザはそういった動作をしてるから、
非ASCII文字を使っても結構イケちゃうときがある、ということですかな。

このあたり、HTMLページ作成ツールの類で
サポートしておくべき内容なんだろうなぁ。
アンカー名に非ASCII文字が使われていたら警告を表示するとか。
いや、一通り出来てからチェックするツール・ページもありますけど。
http://openlab.ring.gr.jp/k16/htmllint/htmllint.cgi
とか。

う。日記ページをチェックしたら凄い事になった… orz
Re: TAG index/URLエンコード・デコードフォーム by こぶん    2004/06/29 11:44
補足です。
>> 要するに、仮名漢字で指定されたアンカーやファイル名に飛べないものだと思ってかかれということ
「文字コード」が異なる場合、仮名漢字で指定されたアンカーやファイル名に飛べないと思ってかかれ です。

IEだと仮名漢字で指定されたアンカーに大抵飛べるのは
1.ページ読み込み
2.文字コードを認識し、内部的におそらくUTF-8へ変換
3.アンカーへジャンプ
という手順をとっているからだと思われます。
そして、Mozillaなどが文字コードが一致していない場合に指定したアンカーへ飛べないことがあるのは、おそらくW3C勧告で推奨されている手順をそのまま使っているため、同じ文字であっても文字コードが異なればURIエスケープした結果が違うものになってしまうことによるものでしょう。
Re: TAG index/URLエンコード・デコードフォーム by mieki256    2004/07/01 17:56
> IEだと仮名漢字で指定されたアンカーに大抵飛べるのは〜

> おそらくW3C勧告で推奨されている手順をそのまま使っているため〜

なるほど。すると、W3C勧告の手順のほうが、
穴がありそうということですかね…。
さすが、腐っても(?)IE、というところでしょうか<なんか違う気が…

#4 [zatta] _紙CDケース

イイ…。萌え絵を印刷した紙を折ってケースを作ってその中に同人CDを(以下略。

#5 [comic] _インド産スパイダーマンはたそがれ清兵衛の哀愁漂うフンドシスタイル

イイ…。某ゲームの忍者はマフラーだかなんだかをたなびかせていたが、このスパイダーマンがたなびかせるものは(以下略。

2003/06/25(水) [n年前の日記]

#1 _著作権の「危機」って何だ

メモ。 _(src)

#2 [anime] 緑川ゆきの漫画はいいなぁ

妹からLaLa借りて読んだのだけど、(・∀・)イイ! 緑川ゆき、(・∀・)イイ! 「やめろぉ!ショッカー!」 (・∀・)イー!

この記事へのツッコミ

Re: 緑川ゆきの漫画はいいなぁ by がんした    2003/07/02 00:34
以前、みえきさんが一押してた「麻生みこと」がヒットだったので、
漫画喫茶で「緑川ゆき」作品も探してみた。

「緋色の椅子」と、
http://www.s-book.com/plsql/sbc_book?isbn=4592172981

「あかく咲く声」を読んだがピント来ない。
http://www.s-book.com/plsql/sbc_book?isbn=4592177800

みえきさんが読んだのは「アツイヒビ」とかいう短編集だったのだろうか?
http://www.s-book.com/plsql/sbc_book?isbn=4592177991
Re: 緑川ゆきの漫画はいいなぁ by mieki256    2003/07/02 01:16
自分が読んだのは、比較的新しいLaLa本誌に載ってた読みきり短編だったので、たぶん単行本化はされてないと思いますです。

ネットで評判が高いのは「蛍火の杜へ」みたいですね…たしかにアレは、先日読んだ作品より良かった気がする。単行本化されてるんだろうか。

なんとなくですけど、少女漫画って作家の感性というかフィーリングだけで押し切っちゃうところが強い気もするんで、単行本2冊ほど読んでピンと来なかったというのは、元々がんした氏にとって生理的に合わないタイプの作家さんなのかもしれないな、という気もしていたり。わかつきめぐみのように、男性でもすんなり受け入れられる作品を描く作家さんではなくて、売り込めるターゲットの範囲が狭そうなタイプの作家のような気もするんで…。

例えば、絵がラフな感じだと普通の男性は読んでてものめり込めないんじゃないかとか…。わかつきめぐみも、麻生みことも、絵柄はカチッとしてますが、緑川ゆきはそれらの作家とは対称的にかなり雑っぽいですし。…絵柄は関係無いのかな。どうなんだろう。
Re: 緑川ゆきの漫画はいいなぁ by がんした    2003/07/04 07:37
今出てるLaLa8月号の「体温のかけら」を読んだ。
確かに絵柄的には好みとは、ちとずれるかなと思ってはいたが、
話はそれなりに面白い。特に、ヒロインが変に勢い有る所なんか
新鮮みと新人らしい勢いがあって好印象。

もちょっと場数こなして、作品綴ると面白い感じに化ける
新人作家さんなのかもしれないと感じた。
Re: 緑川ゆきの漫画はいいなぁ by mieki256    2003/07/04 23:08
新人…かなぁ。結構前から作品を発表してる作家さんのような。…いや、やはり新人かな。中堅とかベテランとかいうほどの時間は立ってないのだろうし。区分分け(?)が微妙に難しい時期(?)ですかねぇ。

#3 業界人言葉

興味が湧いたので検索してみたら、 _ある_ある わ。たしかに先日の「逆さ言葉」は _ミュージシャンが使ってた と書いてありました。その手の専門学校ではこの手の言葉も勉強するんだろうか。

数百年後、この手の言葉・流行語はどのくらい残ってるだろう。きっと「平成でござる」の中で、 _x代目杉浦日向子先生 がおっとりと解説して、観客が「へー」「ほほぅ」と感心するのでしょう。…人類が生き残ってたらな… <どうした急に?

#4 [ore_xxxxx] _こないだ妄想してた、どろろは

「三つ目がとおる」じゃないか…。お釈迦様の指を柱と勘違いして文字書いてた猿の気分。しかもめっちゃヘタ字。 _「インド人を右に!」 ぐらい。

2002/06/25(火) [n年前の日記]

#1 ときメガ

19インチモニタなのに表示領域が15インチぐらいしかないのです。トホー


妹が! 買ってしまったのですよ!
「ときメガ」を! ??(´Д`;) ナゼに…

で、ちょこっと見せてもらったんですが。
コレ…面白いやんか!
EVS万歳。OPムービーのセンス、ナイス。
ベテラン男性声優さん達の演技が光りまくりングですなぁ…

ところで。
…弟は落とせないんですか?<オイ

2001/06/25(月) [n年前の日記]

#1 味噌

スキャナの引き取り手が見つかったんで梱包してたのですが。
物置から発掘してきたダンボール箱。妙に不思議な匂いが。
どうやら物置に置いてあった味噌桶の匂いが染み付いてしまったらしく。
こういうのをミソがつくというんでしょうか <そのまんまやん


なんだか頭痛が。
もしかして虫歯から来てるのだろうか。

2000/06/25() [n年前の日記]

#1 選挙と室内モデルと最終回

選挙行ってきました。
お調子者の失言オヤジが日本のトップにいることに耐えられないので。
でも、あの人や、ああいう人を平気で持ってきてしまう政党に、何の疑問も不安も持たない方が日本にはたくさんいるらしく。この国の未来は絶望的。ってヒッキーで無職の自分が言い切るのもなんか変ですが。

田中眞紀子さんあたり、首相にならないかな。
あの人も、「問題発言」しますが、質が違うから。そっちのほうがマシ。
なんかのTVでやってましたが、「首相になってほしい人物は?」と、どこぞでアンケートとったら、一位が「ビートたけし」だったそうで。
なぜ「ビートたけし」なのかを考えれば、田中さんみたいな人が首相になるというのも、実は民意(?)にかなりマッチした状況では、とか思ったり。
でも「下っ端」だろうから無理だろうな。

余談。
「田中眞紀子」の「眞紀子」の字が怪しかったので、自民党のHPを見にいったのですが。
若手議員のHPはあるけど、森さんや田中さんのHPは無かった。
HPさえあればそれでいい、ってもんじゃないですけど、でもなんかガッカリ。


Shadeで室内モデルを作ってるわけですが。
無限遠光源の光は、天井の影のため、室内のモデルに入らなくて。
こういう時、どう光源を設定していったらいいんだろ。
とりあえず、ライトのあるべき場所に点光源やスポットライトを配置してるけど、思ったようにいかない。
難しいッス。


会長さんからアニメビデオが届いたので、それを見ながら作業。サンクス!愛してるぅ〜!>会長さん
今回は最終回多し。
ダイガード、ちょっと寂しかった。
リヴァイアス、いいなぁ。黒田さん、いいねぇ。
BLUE GENDER、頭の悪い私には何がなんだかよくわかりませんです。
1本見終わったところなので、ターンAの最終回はまだ。ムチャクチャ楽しみ〜 ( ̄ー ̄)

1999/06/25(金) [n年前の日記]

#1 (NoTitle)朝方から昼にかけて、...

朝方から昼にかけて、絵コンテを描いてたり。描いてる最中は「お、我ながら中々イイ感じなんでないかい? ( ̄ー ̄)ニヤリッ」と思いつつやってたんですが(まあ、数日後に見たら「…オレって…才能ねえナ」と思うだろうことは経験的に絶対確実なんですが (T_T) )、ふと気がつくと肝心のシーンに行くまでの導入部分なのに8ページぐらいページを使っていて…こりゃあヤバイ。会長さんからは「15ページぐらいで」とか言われてるのに、導入だけで半分使ってどないすんねん>オレ このままじゃ膨大なページ数で描くことになっちゃう…そんなの実力的に出来るわけないしな…。たぶん全部描いた後、今日描いたあたりはバッサリとカット、てなことになるでしょうな。シクシク。

昼頃意識を失って、ふと気がつくとPM5:00。お腹を出したまま寝ていたせいか、腹がピーピー状態で、その痛さで目が覚めました。やわな胃腸ですわ。グッスン。

妹が「久遠」のオフィシャルブックを購入した模様。えらいツボにハマったらしいなぁ…。ちょっと借りて見ましたけど、巻末の外伝小説「カシスの庭」、結構スラスラ読ませてくれるじゃないですか。なんだかファンの書いた二次小説を読んでるみたいで、中々good。(それって…ほめてるの?けなしてるの? (-_-; ) しかし開発者インタビュー記事を読んだら、ゲームで不満に思っていた点が、ほとんど「こだわりの結果」だということが判明。「いい仕事してますねえ」だったんですね。
しかし吉原のシーンで「あ」とか「ん」と書いただけでシナリオ没ってのは笑えた。SCEチェックなんでしょ、たぶん。そういや昔、SCEチェックってのは、10人ぐらいの男性たちにその絵やシーンを見せて、とある部分の角度がどれだけ変化したかを測定・最大/最小/平均値等を求めて決定しているのでは? という説があったけど(大爆笑) そんなの別に「18禁」とかつけて発売すりゃイイのに…ってそういうラインナップがあるだけでもイメージ的に許せないんだっけか。「パソコンでいくらでもおやりになってください」って主張してるし。というわけで、やっぱりセガが生き残るにはそっち方面しかないと思うです(笑) 第一次欲求の力をエリート(SCE)に見せてやれ!(冗談です)

「久遠」タイプのゲームの魅力に取りつかれたのか、妹がなんと自分で「To Heart」購入(爆) もちろんPS版…って当たり前か。先輩とマルチをクリアしたそうだけど、曰く「ラブコメ風でそこそこおもろい」との事。「クソゲーだった」と言われなくて、何故かホッとしたり (^^;
そういや問題発言もちょっと聞いたりして。妹曰く「セリオはザコキャラだし…」。………「ザコキャラ」!? すると何かい、「マルチ」あたりは「ボスキャラ」で、あかりは「大ボス」「ラスボス」ですか!?
あともう一つ聞いたな。「あかりは『ちびまる子』系だね」。……ええええっ!? 何じゃそりゃあ!? なんか手のしぐさとかがそう見えるそうで…。そんな説、初めて聞いたわ。女性の視点って…おもろいなぁ (^^;

以上、23 日分です。

過去ログ表示

Prev - 2021/12 - 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 31

カテゴリで表示

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


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

Powered by hns-2.19.6, HyperNikkiSystem Project