2026年8月24日月曜日

ひょっとしなくても

ニコ動でアニメを観てる身として、今期観ている「対あり」。
核となる格ゲーシーンが作画労力0という画期的なアニメ(と言っても、50年前の「まんがはじめて物語」等からある手法ですが)で、その分の労力をちゃんとアニメパートに回しているので作画クオリティも高い良作なんですが…

やたら丁寧なパロディネタ
ミリ残りから逆転できる白百合
カフェの使用キャラが春麗

…原作はミリも知らないのですが

レッツゴージャスティーン!

…この流れでやらない方がびっくりですよ。調べてみたら22年前のEVOでのウメハラの試合なんですが…
スト3とスト6の違いもありますが、撮影協力ウメハラが乗るんでしょうか?
実は対戦した二人が10年後の14年にエキシビジョンでこの時のネタを再現(しかも左右逆)したらしいのですが…今もビーストはこの操作をできるのか?
場外戦にも期待ですね。

師匠の難題1

 ではいきなりソースコード。

ソースここから

import pyxel

class Bresenham:
    
    def __init__(self):
        self.l_side = 0
        self.s_side = 0
        self.counter = 0
        self.adder = 0

    # 長辺、短辺を入力
    def setup(self,l_side,s_side):
        self.l_side = l_side+1
        self.s_side = s_side+1
        return self.l_side
        
    # 現在の短辺の位置を返し、次の短辺の位置を計算
    def step(self):
        ret = self.adder
        self.counter += self.s_side
        i = self.counter - self.l_side
        if i >= 0:
            self.counter = i
            self.adder += 1
        return ret

class App:

    def __init__(self):
        # 画面サイズ 160x120 で初期化
        pyxel.init(160, 120, title="RollBlt")
        self.add_x = 0
        pyxel.load("yajirushi.pyxres")
        
        pyxel.run(self.update, self.draw)

    def update(self):
        # 処理の都合上制限をかけている
        if pyxel.btn(pyxel.KEY_LEFT):
            self.add_x -= 1
        if pyxel.btn(pyxel.KEY_RIGHT):
            self.add_x += 1
        if self.add_x < 0:
            self.add_x = 0
        if self.add_x > 15:
            self.add_x = 15

    def draw(self):
        # 画面を黒(色番号0)でクリア
        pyxel.cls(0)

        bre = Bresenham()
        rag = bre.setup(l_side=15,s_side=self.add_x)

        for y in range (rag):
            add_x = bre.step()
            for x in range (32):
                pyxel.blt(80+add_x + x, 60 + y, 0, x, y, 1, 1)

App()

ソースここまで

そして実行結果
なんだか、斜めにずれていきます。
今回の主役はこの斜めを作るアルゴリズム…ブレゼンハムアルゴリズムです。
まあ、検索すればいくらでも解説が出てくる古典の描画アルゴリズムですが…
基本、こんな感じ。
カウンター0から、長辺方向(この場合は横)に向けて短辺の数(この場合は3)を足していく。で、カウンターが長辺より大きくなったら、カウンターの値を長辺の数(この場合は5)引いて次の描画の際に1段ずらす…以後繰り返し。

はえー、昔の人は賢いな…と、思うのですが原理は簡単です。
小学生が掛け算を習う際に、掛け算とは一方の数をもう一方の数の分だけ足したものと習います。
短編の数を長辺の数分足しているのですから、長辺で引く部分を除いたカウンターの総和は短辺と長辺をかけたもの(この場合は15)となり、当然、その数は長辺で割り切れて、割った答えは短辺。
カウンターの最終値になるまでに長辺で割り切れる回数は当然短辺と同じ(この場合3回)。
では、その割り切れるタイミングは?
…と考えれば理解が早いと思います。

ただし、このプログラムは穴だらけ
Pyxel 座標系はこんな感じ(右方向がXの正の方向、下方向がYの正の方向)ですが。今回のアルゴリズムは長辺>短辺かつ、どちらもプラス方向に値が加算される前提で組まれています。

※中心から各方向へ延ばしたベクトルのX、Y要素の関係

具体的には45度しかカバーできていません。
次回は、ちゃんとした2次元ベクトル上のブレゼンハムクラスを作って、直線を引くプログラムを書いていきます。

2026年8月21日金曜日

掘り、終了

E2-3乙1周目(A勝利)

E2-3乙7周目(初のS勝利)

油と弾が26日の友軍まで待つと自然回復量を回復しきってしまう為、周回をしてみました…案の定A勝利しかできず…(というか、途中撤退1C敗北1だったりします)。
初めてのS勝利で出てくれました、流石に大和、アイオワ連撃をセットしているのでこれ以上掘りたくは無かったですね。

これにて我が艦隊に不在の艦はアイツボルとデイスのみになりました
今後掘る物があるとすれば…

E5
ジャンバール(2隻目)
グローリアス(2隻目)
プリンツオイゲン(3隻目)
アークロイヤル(5隻目)
まるゆ

E4
モガドール(2隻目)

E3
百一号(3隻目)

E1
海防艦

…まあ、正直強く欲しいのはジャンバールとモガドールくらいですかね。
空母のレベリングがあるのでE3とE4は回りますが…それほど本気で回る事は無くなる予定です。とりあえず、全部終わってほっとしてます。

※8/24追記
E3を回っていて、2隻目のラングレーが出て、まあ御駄賃的によかったね…とか思っていたのですが…
2隻目。
君、出るんかい。しかも丁で。なんか申し訳ない感じですわ。レキシントンとサラトガの育成は終わりましたが、しばらくメリーランド、ワスプ、ラングレーの育成でも良いのかも。
ただ、流石にベアルンが75まで育ったら欧州の周回をしようかと思うのですが…
正直、ハロウィン用の天霧及び三隈が溢れていて新艦を拾う枠も無いのですよね。仕方なく三隈改を合成に回していますが、若干勿体ない気もしています。

2026年8月18日火曜日

師匠の難題0

ゲーム業界を引退し、プログラマーを辞めて20年近くが経ちます。
技術不足ゆえ早期退職を促され、受理して辞めた訳で、未練は無いのですですが、一つ心残りは有りました。

プログラマーになって最初の年に師匠(先輩プログラマ)から出された課題を解いておらず、そのまま有耶無耶になり、引退してしまったのです。

で、その課題が画像の回転コピーを作ってみよでした。
私がプログラマーになった年は、ゲーム業界に入って2年目の97年です。
当時のVC++でも BitBlt 関数で回転コピーはできたと思いますが、当然ライブラリや出来合いの関数を使えと言っているわけでは無いことは明白です。ちなみに師匠はアセンブラの名手で、自作のライブラリを作り、ゲーム機のCPUに合わせてカスタマイズし続けていました。

97年はペンティアム2が出たてくらいで、インテルの486や下手すると386すら現役の時代でした。386は後に386SXと改名され、コプロセッサが搭載された拡張版が386DXとなります。で、このコプロセッサが無いとどうなるか?私もはっきり覚えていないのですが、実数の計算ができませんでした。

つまり…アセンブラ化を前提とした実数を使用しない回転コピーを作ってみよ、という意図だったのではないかと推測されます。

なのでひとまず、縛りと仕様を決めます

仕様
転送元画像の一辺の長さは最大128ドット
転送先の画面の一辺の長さは最大512ドット

縛り
実数は使わない
割り算は使わない
三角関数は計算済みテーブルのみを使用(単位長128で、128度法)

まあ、日和って掛け算は使うんですけどね。
以前セットアップした Pyxel ライブラリを使います。…というのも、以前 Kivy の描画関数で描画プログラムを書いた際は遅すぎてとても実用に耐えなかったからです。
ちなみに Pyxel はパレットカラーマッピングですが、本質的に画像の転送方法が課題で色はどうでも良いので気にしません。


で、ひとまず作ってみたのはこんなプログラム。

ソースここから

import pyxel


class App:

    def __init__(self):
        # 画面サイズ 160x120 で初期化
        pyxel.init(160, 120, title="RollBlt")
        
        # 矢印画像をバンクへ読み込み
        pyxel.load("yajirushi.pyxres")
        
        pyxel.run(self.update, self.draw)

    def update(self):
        pass

    def draw(self):
        # 画面を黒(色番号0)でクリア
        pyxel.cls(0)
        
        # 1ドットずつ転送
        for y in range (16):
            for x in range (32):
                pyxel.blt(80 + x, 60 + y, 0, x, y, 1, 1)

App()

ソースここまで

出力結果

バンクからわざわざ1ドット分の画像を縦横の長さ分転送を繰り返して送っています。
普通こんな無駄な転送を行いませんが今後必要になるコードです。次回からはこれを改造していきます。

2026年8月17日月曜日

シックスパックは6個に分かれていても良い?

…と、言うわけで腹筋を絞ってみました。実は横腹については、肋骨がはみ出たりしています。で、腹直筋ですが…6個に分けました。そして、最上段は剣状突起より下に…腹筋は個人差が出やすく段違いになったりはするのですが、ここまで下にずれることがあるのでしょうか?正直、解剖学的に無いような気もするのですが、大腿骨の時点でデザインを優先してますし今更な話です。
これにて、縦長に別れていたシックスパックをほぼ正方形位の比率に、また、胸のスペースを広めに取りました。


大胸筋周辺が適当ですが、ここは作り込む意味がないのでこうなっています。
個人的にはふっ直筋と外腹斜筋の段差が揃ったのでポリゴンのセグメント分けがしやすくなりましたね。

動きは


まあ、以前と大して変わりません。流石に横腹が薄いのが気になりますが、裏返ってしまうポリゴンを調整するのがここら辺が精一杯でこれ以上の調整は難しい感じでした。

キック




うーん感慨深いですね。
ちなみにこの時点でボーンの数は700弱あったりします。
現在はここから前腕のモデリング中…実は手首に捻りボーンがあったり(正解は肘に捻り=尺骨と橈骨の動作があって、手首には無い)色々不具合が見つかったので修正中です。
冬までには手首が繋がると良いなあ… 

2026年8月10日月曜日

実は買ってた MINISFORUM Elite Mini X500


はい、以前買おうと思ったら盗難があって買えなかった奴ですが、実は先月末に入手はできてました…ほとんど触れていなかったのです。
見ての通りソフマップ大宮で購入。予算を1万円オーバーしたんですけどね…

んで、物は良さそうかと言うと…
当然中古ですが、状態は良かったです…ただ、ものそのものはと言いますと…

パースのせいでは無く、普通に巨大なACアダプター。

妙に出来の悪いケース。
合わせ目が上手く繋がっていないケース。実は本体横にあるネジのうち一本がCワッシャーでもかかっているかのように外れなかったのですが、開けてみたら、内部の薄い鉄板に直接ねじバイトを切っているのですが、このネジ穴が潰れてしまってネジが空回りして外れなくなっていました。
普通の工業製品の場合は鉄板にネジ受けを溶接するのですが、そう言う事をしていないようです…。
ネジを強く回せばネジ穴が潰れるのですが、問題はこの潰れたネジ穴から金属のくずが出る事で、これが内部の回路に触れてショートすればそこでアウトな訳です。
商品パッケージとしてはともかく、工業製品としての出来はかなり悪いという印象ですね。

※8/23追記
内側にある金属板に直接ネジ穴を切っている。
そもそもなぜ内側に金属板を付けたのかも謎で、ケースが樹脂なら樹脂ケースに金属製のネジ受けを埋め込めんだ方がコスト的にも良いハズだが、そうはなっていない。

尚、ケースから本体を取り出す時は面倒でも必ず Wifi アンテナを外そう。配線がタイト過ぎてアンテナが千切れます(1敗)。


早速64GBメモリに載せ替えましたが
BIOSで設定できるVRAMメモリのサイズが16GBまでとなっています。
この為、ウィンドウズで使用する場合はデフォルトの16GBx2の状態のままで問題なく、増やしても基本的に効果はありません。

今後このマシンは Linux に載せ替えていきますが…とりあえず Windows の SSD も残しておきたいので別の Linux マシンに低容量 SSD を載せて玉突き的に 256GBSSD を載せようとしています。景気よく新品の SSD を買ってきて Linux に載せ替え~とできないご時世ですので。
で、VRAM64GBが出来たら背景画像のAI生成をやらせてみたいのですが…上手く行きますでしょうか。

※8/23 追記
例によって、LMDE7 と STEAM をインストール、試しにグラブルライジングを入れてみましたが…動かない事は無い…超必殺技がカクついたり、バトル前後のデモがカクついたりするが…。少なくとも、Core i5 1245u よりはかなりマシ。そりゃまあ、ミニPCと言ってもコレデスクトップですからね。ただ、ちゃんとゲームになるかと聞かれれば辞めた方がいいレベルです。又、2GBのVRAMを持った dGPU アリより動いたので、VRAMが16GBと認識されている事も効果はあるようですね。

今後やりたい課題は、ライフワークのモデリング、そしてこれに合わせる背景のAI生成。
そしてもう一つプログラムの課題をやりたいのですが…なんで今の状況で時間に追われるやら…
ひとまず Linux マシンの整理にいそしむとします。

2026年8月5日水曜日

なんとか膝~足首が埋まりました(つま先は仮パーツ)

前回モデリングの状況書いたの5月の半ばでしたから…2カ月半…大和3隻嫁にして、ランカーで2群に入って、イベント攻略終わらせていたから…ってオイオイ。
いや、ホントにコレ2か月以上もかかる代物では無いのですよ…7年前に同様のものを作っていたのでモチベが上がらなかったと言うのもあるのですが。

まず、ざっくり造形から
今回、「尻を大きく、太腿を太く」というコンセプトですが、コレを活かす為には「膝を小さく、腹/脛を細く」しないとなりません。
とは言え、腹は腹筋を作るのでそれなりに太いですし、ふくらはぎに筋肉が無いと強そうに見えません。膝蓋骨は曲げた際に膝が尖って見えるくらい小さく作っています。
で、出来た物がこんな感じ。
脛が骨っぽい…というか骨が実際かなり頑張ってます。足首のくるぶし、膝の内/外の骨の「こぶ」を作っています。
コレが問題で、雑なモデリング教書だと関節部は円筒状のパーツを輪切りして、ボーン影響度を自動で割り当てる…等と書かれています。
確かに楽ですが、それはセルロイド人形であって人ではありません。
とは言え正直にくるぶしを作った場合、くるぶし等の「こぶ」は骨によって形作られるものであり変形しません、これが頂点移動の激しい関節部にあるとポリゴンがねじれたりひっくり返ったりで大変な事になります。…正直完全に対処はできていないのですが、調整が面倒でした。

パースなしの状況でざっと見ると「足短くない?」と思いそうですが…
見ての通り、身長2mに対して股下1mですからそこまで短くはありません。そして肩を下げて足首を45度くらい下げてみると…

まあ、こんなものかと。若干下腹は引っ込めた方が良いかな?とは思わなくはないですが。

まず、膝と言うと思いつくのは膝頭、つまり膝蓋骨周辺ですがここら辺は見た目ほど面倒ではありません。
膝蓋骨は全ての骨で唯一腱膜に囲まれた骨で(腱膜に囲まれた筋肉なら腹直筋等がある)曲がるときにスライドする機構を作る必要がありますが…
それも7年前に作っていたので問題ではありませんでした。

問題は膝の裏。
膝の裏のAの字型になっている部分。ヒカガミ。
外側にハムストリングから繋がる腱、内側にふくらはぎに繋がる筋肉がありまして、セオリーとして内側にある物から作るのですが、ふくらはぎはアキレス腱を引っ張る筋肉です。
つまり、ヒカガミを作る前に足首を作らねばなりません。

足首で問題になるのはくるぶし。
くるぶしは骨なので基本的に変形しません(ただし、くるぶし下部は足底の肉が移動するので膨らみますが)。
対してくるぶしの中心は足首の回転の中心なので周辺は大きく動きます。
この点の処理の為に、足首と同一回転中心に、足首の角度を50%トレースするボーンを作り、大きく動く点、ゆるく動く点をそれぞれのボーンを使って調整しています。

では、前置きが長くなりましたが動きを見ていきます

足首


足首は内側に捻る事ができますが、腓骨の関係で外側に捻る事はできません。
つまり、足首の回転の中心は小指側になります。考えてみれば当たり前なのですが、やってみないと気づけないものです。

ふくらはぎはアキレス腱を引っ張っているのですから、当然連動して動きます。


足全体は凹凸がありすぎたむちゃくちゃなシルエットですが、一応膝を曲げると踵がお尻に付きます(つまり長さの比率的には大きく破綻していない)。
膝蓋骨が大変小さく、曲げると膝がとがったシルエットになるようにしています。

ヒカガミ
流石に多少は破綻しています…というか限界以上に曲げさせています。
ふくらはぎ等の潰れ
ふくらはぎと太腿の膝付近の肉は正座に近い辺りまで膝を曲げると左右に広がります。
この機構は7年前に作っていたものと全く同様です。
ただ、当時の細見のモデルに比べると、流石に理解が深まったと言いますか…


はい、どっこいやってたモデリング…でした。
足の出来は大体満足ですがこのままつま先まで作るかと言うと…。
とりあえずシルエット的に腹筋の修正かなあと。下腹も出ているように見えますし。ただ、コレくらいは出ているものだとも思うのですがね。
ここから肘から先を作って…年内中に指が出来ていれば上出来ですかねえ。顔を作り始めるのは何時の事になるのやら。