2009年03月19日

テクスチャーを綺麗にUPするには?

白と黒の2色で半分半分に塗られたテクスチャーを用意して、
テクスチャーアニメーションで、白黒を点滅させようと思うのですが、
PC上では、綺麗に直線で2色になっている画像を、セカンドライフにUPLOADすると
境界線あたりがぼやけてしまいます。
そのため、アニメーションをさせると、綺麗に、白だけ黒だけの画像にならず、
周囲数ドットがぼやけてしまいます。

BMPでも、PNGでも、TGAでも結果は同じで、「ロスのない圧縮を使用」にチェックを入れても同じでした。
JPEG変換の影響かとは、思いますが、画像の劣化(にじみ)のないUPの方法をご存じの方はいらっしゃらないでしょうか?

参考:
UP元はこういう画像です
テクスチャーを綺麗にUPするには?



同じカテゴリー(オブジェクト関連)の記事画像
tgaファイルの透過テスクに関して
Meshに自動的に付く影について
シェードのスカルプトについて
プリムスカートの生地を薄くしたい
照明があたる壁テクスチャーの描き方
至近距離でスカルプが消えてしまう
同じカテゴリー(オブジェクト関連)の記事
 回転するオブジェクトが動かない (2016-04-23 16:41)
 tgaファイルの透過テスクに関して (2015-08-26 23:02)
 テクスチャについて (2014-03-04 14:56)
 Meshに自動的に付く影について (2013-12-25 18:49)
 リンデン植物がREZできない (2013-07-13 19:02)
 セカンドライフ内マガジンの作り方 (2013-05-31 09:45)

Posted by Zafira Roux  at 05:40 │Comments(9)オブジェクト関連

この記事へのコメント
ピクセルサイズがちっちゃいんじゃないでしょうか
テクスアップのときは大概、256×256か512×512です
大きいほどきれいですが表示に時間がかかります
Posted by K at 2009年03月19日 08:22
テクスチャを使わずにllSetColorで白と黒で点滅ではダメなんでしょうか?

横にスクロールするようなアニメーションなら、テクスチャ使うしかないですけど。

解像度はKさんがおっしゃるように256×256はないと奇麗に見えないかもしれませんね。
Posted by Tako★MASARU at 2009年03月19日 11:26
現在は横の縮尺を0.5で使用しているのだと思いますが、これをもっと小さくしてみてはいかがでしょう。
境界線がはみ出てしまうことはよくありますので、白ならば白の画像の真ん中辺りを使い、黒ならば黒い面の真ん中を使うようにすると、綺麗に単色の面だけを出す事ができると思いますよ。

画像については、SLにアップする際に自動で圧縮がかかってしまうようなので、作ったままの状態で・・・というのは難しいような気がします。
Posted by natsu at 2009年03月19日 17:00
横方向の黒白境界線がぼけるなら
横方向に大きく縦方向には短い画像で問題ないです(縦方向は繰り返しえお使う)
そうやって画像自体の大きさを小さくできますからきれいに見えてなおかつテクスサイズを抑えることができます
Posted by isolette at 2009年03月19日 18:27
Kさん、Tako★MASARUさん、natsu さん、isoletteさん、ご回答ありがとうございます。

まず、スクリプトからの変更では、0.2秒のウェイトがかかってしまうため、高速で切り替える方法として、テクスチャーアニメーションを使おうと思ったのです。
テクスチャーアニメーションの指定では、2分割にすると、縮尺0.5で固定となるので、縮尺の調整で、ぼけている部分を排除するという方法はできないです。

いちおう、1024x1024でも試してみました。
遠目には、綺麗に見えますが、拡大すると、やはりぼけているため、テクスチャーアニメーション(縮尺0.5)では境界付近に違う色が見受けられました。


isoletteさんのおっしゃる方法で、1024x16とかで、ごまかすしかないのかなぁ。。。
GIMPでJPEG保存してもぼけないのに、、、なぜ、SLは、、、
Posted by Zafira at 2009年03月19日 21:44
物のイメージがしづらい質問ですね^^

スクロールというか水テクスチャのような動きではなくて
テクスチャの白と黒の部分を交互に表示させるために
半分ずつの”切り替え”エンドレスなんですよね?

0.2秒のウェイトが気になるくらい高速に切り替えているとしたら
残像がにじみのように見えるというか、、
そもそもにじみなど見えないくらい高速なんじゃないかとイメージしますが
どうでしょう?

それと、試すなら
縦横同サイズじゃなくて、256×512とかですね
縦横比率を変えるのは、ごまかしじゃなくて、普通に使われてる方法ですよ
Posted by nao at 2009年03月19日 22:04
画像のサイズをいろいろ変えて実験してみました。
縦横のサイズを32x512で境界線に1ドット程度の細い筋が出ます。
これを回避するには、面の繰り返しを0.5から0.49等に設定し
Timer使って面のテクスチャを個別に設定するしかないかもしれません。

■画像サイズ
 1)128x128 両サイドに少しグレーのにじみがある
 2)32x32    両サイドに少しグレーのにじみがある(大)
 3)64x512   比較的目立たないが、境界線に細い筋がある
 4)32x512   比較的目立たないが、境界線に細い筋がある


■実験で使用したスクリプト
default
{
state_entry()
{
llSetTextureAnim( ANIM_ON | LOOP, ALL_SIDES, 2, 2, 0, 4, 1 );
}

touch_start(integer total_number)
{
llSetTextureAnim( LOOP, ALL_SIDES, 2, 2, 0, 4, 1 );
// STOP
}
}
Posted by pao at 2009年03月20日 05:27
naoさん、paoさん、ご回答ありがとうございます。

paoさんにいったっては、実験までしていただき、誠にありがとうございます。


作りたいのは、細長い物を0.1秒程度の早さで点滅させたいのです。
実際には、白黒ではなく、白と透明の2色で、グローの点滅をしようとしています。

高速で点滅させても、やはり、にじみの部分が線となって見えてしまいます。

やはり、セカンドライフでのアップロードでは、にじまないでアップするのは、ムリだと言うことで、あきらめます。

そこで、対応策として、横2分割のアニメーションではなく、横に32分割してもっと速くアニメーションすることにします。
(画像が32x32のため)
llSetTextureAnim(ANIM_ON | LOOP, ALL_SIDES, 2, 1, 0, 2, 5);
↓このように変更
llSetTextureAnim(ANIM_ON | LOOP, ALL_SIDES, 32, 1, 0, 32, 128 );


点滅しないときは、みなさんのおっしゃるとおり、横の繰り返しを0.4などにしてにじみの部分を使わないようにします。

ありがとうございました。


>独り言。。。
スカルプトでは、値の変化はないんだから、、アップした画像が変化してるのではなく、表示の問題か??
Posted by Zafira at 2009年03月21日 03:31
ささぴさん、ご回答ありがとうございます。

SetAlphaは、0秒だったのですか、、、それは知らなかったです。。
ただ、SetAlphaによる透明と、テクスチャーによる透明では、グローの光り方が違うので、今回は残念ながら使えないです。
α値での透明は、グローが入ってると透明にならず、光が残ってしまうので。

勉強になりました。ありがとうございます。
Posted by Zafira RouxZafira Roux at 2009年03月22日 01:29
<ご注意>
書き込まれた内容は公開され、ブログの持ち主だけが削除できます。