【解決済み】ピクチャ(spine)の画像が黒ずむ
Posted: 2021年5月13日(木) 22:08
[現状]
RPGツクールMVでspineのpng,atlas,skelをロードしたのですが、ピクチャーに黒い部分がでて困っています。
顔の赤みが黒ずみ、稼働パーツの境目に黒い線がでます。
↓これの一番上「半透明部分が黒ずむ」が近い感じです。
https://docs.live2d.com/cubism-sdk-manual/texture-trouble-shooting/
> 乗算済みアルファ画像を乗算済みでないファイルとして読み込むと発生します。
私の手元にあるpngが乗算済みアルファ画像で、
スクリプト側が乗算済みでないファイルとして読み込んでいる状態なのだと思います。
[聞きたいこと]
スクリプト側を「乗算済みアルファ画像が前提」にしたいのですが、できますでしょうか?
プロジェクト自体がspineの鑑賞アプリみたいな感じになるので、影響が広くなっても大丈夫です。
[環境]
spineのロードに使用したプラグインはPictureSpine.jsです。
https://makonet.sakura.ne.jp/rpg_tkool/MVMZ/PictureSpine/document.html
環境準備の説明にしたがって pixi-spine.js (pixi4-spine3.8)をjs/libsに入れました。
素材はpng,atlas,skel (jsonではない)をロードしています。
jsonではなくskelをロードするためにPictureSpine.jsを少々いじりました(ファイル名の部分のみ)
jsonまたはskelはパーツの動きが書いてあるファイルなので本題の黒ずみとは関係ないと思います。
[ざっくりとした補足(あまり詳しくはない)]
png,atlasがアトラス画像で、skelが動きのデータ。 たぶんspineが出力したもの。
この3つをロードすればキャラが動く。
PIXIにpng,atlas,skelをロードするにはpixi-spine.jsが必要。
PictureSpine.jsが(pixi-spine.jsを使って)png,atlas,skelをツクールMVのピクチャに表示してくれる感じです。
[やったこと]
PictureSpine.js を.jsonではなく.skelをロードするようにいじりました
~上略~
function load() {
let loader = new (PIXI.Loader || PIXI.loaders.Loader)();
for (let file of $p['json file']) {
let [name] = file.match(/([^/]+?)(?=\.skel|$)/);//←44行目くらい
$p['spine data'][name] = null;
loader = loader.add(name, 'img/spines/' + file.replace(/^\/?(.+?)(\.skel|$)/, '$1') + '.skel');//←46行目くらい
}
~以下略~
pixi.js の premultiplyAlpha をtrueにしてみたけどダメでした
this.premultiplyAlpha = true;//←491行目くらい
RPGツクールMVでspineのpng,atlas,skelをロードしたのですが、ピクチャーに黒い部分がでて困っています。
顔の赤みが黒ずみ、稼働パーツの境目に黒い線がでます。
↓これの一番上「半透明部分が黒ずむ」が近い感じです。
https://docs.live2d.com/cubism-sdk-manual/texture-trouble-shooting/
> 乗算済みアルファ画像を乗算済みでないファイルとして読み込むと発生します。
私の手元にあるpngが乗算済みアルファ画像で、
スクリプト側が乗算済みでないファイルとして読み込んでいる状態なのだと思います。
[聞きたいこと]
スクリプト側を「乗算済みアルファ画像が前提」にしたいのですが、できますでしょうか?
プロジェクト自体がspineの鑑賞アプリみたいな感じになるので、影響が広くなっても大丈夫です。
[環境]
spineのロードに使用したプラグインはPictureSpine.jsです。
https://makonet.sakura.ne.jp/rpg_tkool/MVMZ/PictureSpine/document.html
環境準備の説明にしたがって pixi-spine.js (pixi4-spine3.8)をjs/libsに入れました。
素材はpng,atlas,skel (jsonではない)をロードしています。
jsonではなくskelをロードするためにPictureSpine.jsを少々いじりました(ファイル名の部分のみ)
jsonまたはskelはパーツの動きが書いてあるファイルなので本題の黒ずみとは関係ないと思います。
[ざっくりとした補足(あまり詳しくはない)]
png,atlasがアトラス画像で、skelが動きのデータ。 たぶんspineが出力したもの。
この3つをロードすればキャラが動く。
PIXIにpng,atlas,skelをロードするにはpixi-spine.jsが必要。
PictureSpine.jsが(pixi-spine.jsを使って)png,atlas,skelをツクールMVのピクチャに表示してくれる感じです。
[やったこと]
PictureSpine.js を.jsonではなく.skelをロードするようにいじりました
~上略~
function load() {
let loader = new (PIXI.Loader || PIXI.loaders.Loader)();
for (let file of $p['json file']) {
let [name] = file.match(/([^/]+?)(?=\.skel|$)/);//←44行目くらい
$p['spine data'][name] = null;
loader = loader.add(name, 'img/spines/' + file.replace(/^\/?(.+?)(\.skel|$)/, '$1') + '.skel');//←46行目くらい
}
~以下略~
pixi.js の premultiplyAlpha をtrueにしてみたけどダメでした
this.premultiplyAlpha = true;//←491行目くらい