使えそうなプロンプト:
big robot mech, titan fall style, t-pose
A heavy armor war Mecha robot
a mecha robot, highly detailed, high quality, t-pose
battle mech (ガングリフォン風になる)

四角形内の任意の点のUVを求める方法(三次元版、未検証)

 

    // 線形補間
    private Vector2 Lerp(Vector2 start, Vector2 end, float t)
    {
        return start + t * (end - start);
    }
 
    // 三次元空間内の四角形のUV座標を計算
    public Vector2 CalculateUV(Vector3 A, Vector3 B, Vector3 C, Vector3 D, 
                               Vector3 E, Vector3 F, Vector3 G, Vector3 H, Vector3 I)
    {
        // 上面ABCDの平面における点Iの投影を計算
        Vector3 normalABCD = Vector3.Cross(B - A, C - A).normalized;
        Vector3 projectionIOnABCD = I - Vector3.Dot(I - A, normalABCD) * normalABCD;
 
        // 下面EFGHの平面における点Iの投影を計算
        Vector3 normalEFGH = Vector3.Cross(F - E, G - E).normalized;
        Vector3 projectionIOnEFGH = I - Vector3.Dot(I - E, normalEFGH) * normalEFGH;
 
        // 上面と下面の投影点からUV座標を計算
        Vector2 uvABCD = CalculateUVOnPlane(A, B, C, D, projectionIOnABCD);
        Vector2 uvEFGH = CalculateUVOnPlane(E, F, G, H, projectionIOnEFGH);
 
        // 点Iが上面と下面の間でどの位置にあるかに基づいてUV座標を補間
        float distanceToABCD = Vector3.Distance(I, projectionIOnABCD);
        float distanceToEFGH = Vector3.Distance(I, projectionIOnEFGH);
        float totalDistance = distanceToABCD + distanceToEFGH;
        float weightABCD = distanceToEFGH / totalDistance;
        float weightEFGH = distanceToABCD / totalDistance;
 
        // 重み付けされたUV座標を算出
        return Lerp(uvEFGH, uvABCD, weightABCD);
    }
 
// 平面上の四角形内の点のUV座標を計算
    private Vector2 CalculateUVOnPlane(Vector3 A, Vector3 B, Vector3 C, Vector3 D, Vector3 P)
    {
        // 辺ABとCDに沿った補間
        Vector3 AB = B - A;
        Vector3 CD = D - C;
        float tAB = Vector3.Dot(P - A, AB) / AB.sqrMagnitude;
        float tCD = Vector3.Dot(P - C, CD) / CD.sqrMagnitude;
        Vector3 AB_P = A + tAB * AB;
        Vector3 CD_P = C + tCD * CD;
 
        // 辺ADとBCに沿った補間
        Vector3 AD = D - A;
        Vector3 BC = C - B;
        float tAD = Vector3.Dot(P - A, AD) / AD.sqrMagnitude;
        float tBC = Vector3.Dot(P - B, BC) / BC.sqrMagnitude;
        Vector3 AD_P = A + tAD * AD;
        Vector3 BC_P = B + tBC * BC;
 
        // 辺に沿った補間からUV座標を計算
        float u = (P - AB_P).magnitude / (CD_P - AB_P).magnitude;
        float v = (P - AD_P).magnitude / (BC_P - AD_P).magnitude;
 
        // 最終的なUV座標を算出
        return new Vector2(u, v);
    }

 

四角形内の任意の点のUVを求める方法

    // 線形補間
    private Vector2 Lerp(Vector2 start, Vector2 end, float t)
    {
        return start + t * (end - start);
    }

    // 四角形内の点のUV座標を計算
    public Vector2 CalculateUV(Vector2 A, Vector2 B, Vector2 C, Vector2 D, Vector2 E)
    {
        // 辺ABとCDに沿った補間
        Vector2 AB = B - A;
        Vector2 DC = C - D;
        float tAB = Vector2.Dot(E - A, AB) / AB.sqrMagnitude;
        float tDC = Vector2.Dot(E - D, DC) / DC.sqrMagnitude;
        Vector2 AB_E = Lerp(A, B, tAB);
        Vector2 DC_E = Lerp(D, C, tDC);

        // 辺ADとBCに沿った補間
        Vector2 AD = D - A;
        Vector2 BC = C - B;
        float tAD = Vector2.Dot(E - A, AD) / AD.sqrMagnitude;
        float tBC = Vector2.Dot(E - B, BC) / BC.sqrMagnitude;
        Vector2 AD_E = Lerp(A, D, tAD);
        Vector2 BC_E = Lerp(B, C, tBC);

        // 辺に沿った補間からUV座標を計算
        float u = (E - AB_E).magnitude / (DC_E - AB_E).magnitude;
        float v = (E - AD_E).magnitude / (BC_E - AD_E).magnitude;

        // 最終的なUV座標を算出
        return new Vector2(u, v);
    }

zenn.dev

 

github.com

pixalization_infernce を手元で動かすために、CUDAとcuDNNを入れた
CUDA 11.8の場合はcuDNN 8.9.3 for CUDA 11.x

 

D:\Houdini\MikuAnime\pixelization_inference>python pixelization.py --input P04_680.png --output P04_d.png
で解像度680を170に落とせるようになった
WebUIは1/4サイズ以外でも奇麗だがこちらは1/4固定。それ以外は同クオリティになってそう

 

tech.nkhn37.net

 

 

ひとまずこの設定で。

denoising strangty : 0.42  解像度1024

darkSushiMixMix_225D.safetensors : わるくないが目が潰れがち 
counterfeitV30_v30.safetensors :華はあるけど不安定で緑が出る
AnythingV5Ink_ink.safetensors   :一番良さそう

 

プロンプト:

 hatsune miku  <lora:boldline:5> "high contrast"   "dark boderline"  "anime" 

ネガティブプロンプト:

deformed mutated disfigured worst quality poorly_drawn_hands bad anatomy

 

で出力して、Pixel Size6でドット化で149x149 身長100ドットくらい