mieki256's diary



2024/10/30(水) [n年前の日記]

#1 [proce55ing][processing] ProcessingのPGraphicsの動作を確認

Processing (Proce55ing) の PGraphics の動作について確認してみた。

PGraphics というのは、イメージバッファと言うか、フレームバッファと言うか…。 PGraphicsを使えば、透明部分を持った状態でファイル保存できるので、アルファチャンネル付き画像を得られるはず。

環境は Windows10 x64 22H2 + Processing 4.3。

ソース :

_sketch_20241026a_pgraphics_test.pde
// PGraphics save sample

PGraphics pg;
PImage img;
PImage bg;
int scrw;
int scrh;
float ang = 0;
boolean exitfg = false;
boolean saveframe_enable;
int sframecount;

void setup() {
  size(512, 288, P2D);
  scrw = width;
  scrh = height;
  println("size=" + scrw + "," + scrh);

  frameRate(24);

  img = loadImage("./chara.png");
  bg = loadImage("./bg.png");
  pg= createGraphics(scrw, scrh, P2D);
  exitfg = false;
  saveframe_enable = false;
  sframecount = 0;
}

void draw() {
  background(40, 80, 160);

  //draw to PGraphics
  pg.beginDraw();
  pg.clear();
  pg.push();
  pg.imageMode(CENTER);
  float x =(scrw / 2) * 0.9 * sin(radians(ang * 2.0)) +(scrw / 2);
  float y =(scrh / 2) * 0.9 * sin(radians(ang * 5.0)) +(scrh / 2);
  pg.translate(x, y);
  pg.rotate(radians(ang));
  pg.image(img, 0, 0);
  pg.pop();
  pg.endDraw();

  // draw Background
  image(bg, 0, 0);
  
  // draw PGraphics to canvas
  image(pg, 0, 0);

  if (saveframe_enable) {
    String fn = "frames/" + get_seq(sframecount, 8) + ".png";
    noStroke();
    fill(255);
    textSize(24);
    text("capture " + sframecount + " frame", 8, 24);
    text("save " + fn, 8, 48);
    pg.save(fn);

    sframecount++;
  }
  ang += 1.0;

  if (exitfg) {
    exit();
  }
}

void keyTyped() {
  if (key == 's') {
    // frame save enable / disable
    saveframe_enable = !saveframe_enable;
    if (saveframe_enable) sframecount = 0;
  }
  else if (key == 'q') {
    // set exit
    exitfg = true;
  }
}

String get_seq(int n, int k) {
  String s = "000000000000" + n;
  return s.substring(s.length() - k);
}

使用画像。

_bg.png
_chara.png

実行結果 :

実行すると以下のような見た目になる。

sketch_20241026a_pgraphics_test_ss.gif


動いてる部分が PGraphics に描画してる部分。BGと書かれているのがウインドウに直接描画している部分。
  • PGraphics に画像(chara.png)を描画することができている。
  • その PGraphics をウインドウ内に描画できている。
  • PGraphics が透明部分を持っているので、背景(bg.png)も見えている。

更に、Sキーを押すと、PGraphics の内容を frames/00000000.png - 99999999.png といった連番画像として保存できる。

sketch_20241026a_pgraphics_test_ss2.gif


保存した連番画像をAPNGにしてみた。

out.png

PGraphics が透明部分を持っているので、アルファチャンネル付きの連番画像として保存されていることが分かる。

そんなわけで、一旦 PGraphics に描画して、その PGraphics をウインドウ内に描画する作りにしておけば…。その PGraphics を連番画像として保存する処理を追加することで、Processing の描画結果を動画編集の素材として使えるようになるのではないかな、と妄想しているところ。

#2 [pc] キーボードのマルチメディアキーが鬱陶しい

思考メモ。

手持ちのコンパクトなキーボード群は、ファンクションキーのところにマルチメディアキーっぽいキーが割り当てられていて、個人的にはこれがかなり鬱陶しい。

PCのセットアップ作業をする時は、F2、F10、F11等を押すわけだけど。はて、このキーボードは、ファンクションキーをそのまま押していいのか、それともFnキーを押しながら押さないといけないのかと悩んでしまって…。実に鬱陶しい。

せめて、ファンクションキーを優先するのか、マルチメディアキーを優先するのか、スイッチで切り替えられたらいいのに…。いや、そんな機能がついたらお値段も高くなるだろうし、消費電力も増えたりしてワイヤレスキーボードでは都合が悪いのかもしれんけど…。

何が一番モヤモヤするかと言うと、キーボードメーカが「ファンクションキーなら潰してええやろ? ここを叩くヤツ居ないだろ?」と平気で思ってそうなのが…。いや、実際に利用頻度が少ないだろうから、BIOS(UEFI)設定関係もそこに割り当てられているのだろうけど…。

お前にとっては要らないキーでも俺にとっては要るんだよ! めちゃくちゃ必要なんだよ! もっとも、それはマルチメディアキーも同じか…。その手のキーが無いと不便でたまらんと言い出す人も居そうだし。

このあたり解決策は無いのだろうか。

個人的には、マルチメディアキーは、豆粒みたいなボタンでもいいから別キーとして用意したほうがいいんじゃないかと思ってるのだけど。大き目のキーボードなら実際そうなってるけど。自分がメインで使ってるキーボードも、ファンクションキーのすぐ上に小さいボタンとして配置されてるし。

あるいは、マルチメディアキー専用キーボード、みたいなものでもあれば…。キーが横一列にずらりと並んでる感じのキーボードで…。マルチメディアキーが欲しい人はそのキーボードだけ買ってUSBで繋げばいい。どんなキーボードを使っていてもマルチメディアキーが利用できる状況になるはず。

まあ、セットアップ作業時のためだけに安いキーボードを買ってきちゃうのが一番妥当な解決策かも…。

#3 [pc] 親父さん用PCをメンテナンス

_昨日の続き。

親父さん用PCのM/B or CPUが壊れたので、別のM/B、ASRock A520M-ITX/ac と入れ替えて、ひとまずWindows10が起動するところまで来たのだけど。Windows11にアップグレードできる条件を満たすために、MBR の SSD/HDD を GPT に変換しようとして苦労した。

でもまあ、一応変換はできた感じがする。以下は作業メモ。

回復ドライブは作成できなかった :

MBRをGPTに変換する mbr2gpt.exe を使って、MBRになっているWindows10のブートドライブ(システムドライブ)をGPTに変換したい。そのためには、SSD/HDDにインストールされたWindowsとは別のWindowsで起動する必要がある。

一般的には回復ドライブをUSBメモリ等に作成して、そちらから起動することで、作業ができるはずだけど…。

今回、Windows10 x64 22H2の回復ドライブを、USBメモリ(32GB、USB3.0接続)に作ろうとしたけれど成功しなかった。一見すると出来上がったように見えるけど、そのUSBメモリで起動しようとすると以下のメッセージが表示されて起動してくれない。

Recovery

Your PC/Device needs to be repaired

The operating system couldn(t be loaded becase the kernel is missing o contains errors.

File: \windows\system32\ntoskrnl.exe
Error code: 0xc000a004

You'll need to use recovery tools. If you don't have any installation media (like a disc or USB device),
contact your PC administrator or PC/Device manufacturer.
「ntoskrnl.exeがロードできないから何もできんわ」と言われてる?

エラーメッセージ/エラーコードでググると、この不具合がそこそこ散見されるのだけど、効果がありそうな解決策は見つからなかった。皆、本当に、ちゃんと起動する回復ドライブを作成できているの…?

仕方ないので、Windows10のインストールメディアを作成して、そちらから起動してどうにかすることにした。

Windows10インストールメディアを作成 :

Windows10インストールメディア(USBメモリ)を、Rufus 4.6 で作成した。rufus-4.6.exe を入手して実行。

_Rufus - 起動可能なUSBドライブを簡単に作成できます

最初の起動時に、自動更新するかどうかで「いいえ」を答えてしまうと、Windowsのisoをダウンロードできない状態になることを知らなくて、「巷の解説ページと見た目が違う…。何故だ…」と悩んでしまった…。

_Windows 10 過去バージョンをダウンロードする方法-パソブル

設定で、自動更新を見るようにして、終了してから再度実行すると、「選択」ボタンの横に小さな三角が出てきて「ダウンロード」が選べるようになった。Windows10 x64 22H2 を選択してダウンロード。

標準では「GPT」「UEFI (CSM無効)」が選ばれてるけれど、今回は「MBR」「BIOS (または UEFI-CSM)」を選んでみた。

インストールメディアになったUSBメモリができたので、親父さん用PCに差し込んで起動。今回の ASRock A520M-ITX/ac では、電源投入直後に F11キーを押せば起動メディアを選べる。

さすが(?)、インストールメディア。回復ドライブと違って、こちらはすんなり起動してくれた。

途中で「コンピュータの修復」云々と言うリンクが出てくるのでそちらを選ぶと、回復作業っぽい画面が表示された。トラブルシューティング → コマンドプロンプト、を選んで作業していく。

MBRからGPTに変換 :

以下のページを参考にして作業した。

_【テクニカルサービス事例集】データを消去せずに「MBR」を「GPT」に変換 | アプライドタイムス

以下を打って、対象となるディスクの番号を把握する。今回はディスク0を対象にすればいいと分かった。
diskpart
list disk

diskpart から抜ける。
exit

mbr2gpt.exe で変換できそうか調べる。
mbr2gpt /validate /disk:0 /allowFullOS

もし、「Validation completed successfully」と表示されたら、変換できる可能性が高いらしい…。幸い、今回はこのメッセージが表示された。

本当はバックアップを取ってからやるべきなんだろうけど…。ダメ元で変換してみる。
mbr2gpt /convert /disk:0 /allowFullOS

「Conversion completed successfully」と表示されたら変換できた、ということらしいけど…。これまた幸いなことに、このメッセージが表示された。

一旦OSを終了。電源が切れた状態にする。

BIOS設定を変更 :

これで MBR から GPT に変換できたのかもしれないけれど…。BIOS設定(UEFI設定?)を変えないとGPTになっているブートドライブを認識できないので、そのあたりの設定を変更する。

注意点。以下に示すのは ASRock製M/Bの話なので、別メーカ製M/Bは違う操作になる可能性がある。

電源を再投入。BIOS設定画面(UEFI設定画面?)に入る。ASRock製M/Bの場合は、電源投入直後からDELキーをポンポンポンと連打していればBIOS設定画面に入れる。

CSMを無効化。設定を保存して再起動。DELキーを叩いて、再度BIOS設定画面に入る。

Secure boot を有効化。しようとしたけどキーを作れと言ってくる。すぐ下にある項目でキーを作ってインストールした。設定を保存して再起動。DELキーを叩いて、再度BIOS設定画面に入る。

Secure boot を有効化。今度は有効化できたらしい。設定を保存して再起動。

これでSSD/HDDが認識されて、Windows10が起動した。Win + X → ディスクの管理で調べたら、システムドライブはMBRからGPTに変わっていた。…上手く行ったかもしれない。

Windows11にアップグレードできそうかチェックしたところ、全条件をクリアしていると表示された。

ただ、64GBのストレージ容量が必要と表示されている…。親父さん用PCのSSDは、240GB中、空きが20GBぐらいしかない。空き容量が足りなくてアップグレードに失敗しそう。

外付けHDDに移動できそうなものは移動してもらって、空き領域を確保するしかないけれど、その作業は親父さんにやってもらうしかない…。何が必要なファイルなのか、自分には分からんし。

何にせよ、これで Ryzen 5 PRO 4650G に ―― Windows11サポートCPUに入れ替えただけの効果は得られた。 今まで通りにPCが使えるところまで復活させられたし、肩の荷が下りた。

雑感 :

しかし、どうしてこんなことをしないといかんのかというモヤモヤした気持ちはある…。Windows10と同じ条件ではダメなの…? 一体何が問題になるの?

もっとも、Microsoftとしては、最初からWinodws11がプリインストールされてる新しいPCを買えや、古いPCなんか使ってんじゃねえクソが、という感じなんだろうけど…。地球に優しくない企業…。

それはそれとして、親父さん用PCのSSDには、回復パーティションが無いのだよな…。あったほうがいいのかもしれないけれど、Cドライブを縮小することができない。後ろのほうまで移動不可のファイルがギッシリで…。

後ろのほうにあるファイルだけを前に移動できるツールって無いのだろうか。いや、デフラグツールを使えばいいのかもだけど。一般的に、フツーのデフラグツールは、移動不可のファイルについては移動できないよな…。それに、以前SSD全体にデフラグをかけたらWindowsが起動しなくなったこともあったので、全体に対してはやりたくない…。OSのクリーンインストールしかないのかな…。

App Shopをインストールした :

これは ASRock製 M/B 限定の話だけど。ASRock App Shop をインストールすればドライバの更新等ができるらしいと知ったので、APPShop(v2.0.0.6).zip を入手してインストールしてみた。

インストールの仕方が分からなかった無線LANドライバも、App Shop経由なら更新できた。

Bluetoothドライバもインストールの仕方が分からなかったけど、こちらは更新可能なリストに出てこなかったので、もしかするとWindows10標準ドライバとバージョンは変わらないのかもしれない。

以上、1 日分です。

過去ログ表示

Prev - 2024/10 - 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