15

私は小さなゲームのためにいくつかのグラフィックスに取り組んでいます。グラフィックはSVGで、ほとんどがタイルベースになります(ゼルダの伝説:SNESの過去へのリンクを考えてみてください)。私は小さな草のタイルを描きました。このNxM回をフィールド全体にコピーしたいと思います。Inkscapeまたは別のGUISVG編集ツールでこれを行うと、3.5MBを超えるファイルが作成され、同じサイズの32ビットビットマップよりも大きくなります。

ある種の「草のタイル」オブジェクトを定義できるかどうか知りたいのですが、それを自分のフィールドの各スポットにコピーする代わりに、適切な座標で参照するだけです。これにより、ロード時にシーンが同じ量のメモリを消費することになりますが、ディスクに保存するファイルがはるかに小さくなり、この場合、変更したい場合は編集が簡単になることを願っています。たとえば、草の色の場合、変更を加えてから新しいタイルをフィールド全体に再コピーするのではなく、アーキタイプオブジェクトを変更するだけで済みます。

役立つと思われるさまざまなキーワードを約半ダースほど検索しましたが、探しているものが何も実行されていないようです。'xlink:href'属性を使用することを考えました。これは、最初にカラーパレットを定義するためにタグで使用され、その後、変換データを含む別のタグで参照するためです。

私は次のようなものを使ってみました:

<path id="grassyPatch" d="M 3.3310392e-7,608 31.993091,624 63.986183,608 31.993091,592 z" style="..." />

そして、それを次のようなものでコピーします。

<path id="grass-copy1" xlink:href="#grassyPatch" transform="translate(32,-32)" /> <path id="grass-copy2" xlink:href="#grassyPatch" transform="translate(32,-64)" />

新しい場所に数回コピーするためなど。これが可能かどうか誰かが私に知らせることができれば感謝します。今のところ希望はありませんので、無理だとご存知の方もいらっしゃいましたら、時間を無駄にしないようにお知らせください。

ありがとう!

4

2 に答える 2

38

あなたはもうすぐそこにいます、あなたがコピー/クローン作成をするために探している要素は<use>

<use xlink:href="#grassyPatch" transform="translate(32,-32)" />

于 2012-04-22T08:34:13.117 に答える
3

これを実現するためにGUIツールを使用したいとおっしゃっていたので、これがInkscapeで可能であることをお知らせしたいと思います。複製ツールの横のツールバーにあるクローンツールを使用する必要があります。または、Ctrl-Dを押すこともできます。これを使用すると、クローンは、クローンを作成しているオブジェクトの上に直接配置されます。移動ツールを使用して、目的の場所に配置するだけです。

Inkscapeには、[保存]ダイアログボックスの[ファイルタイプ]ドロップダウンに[最適化されたSVG]オプションもあります。これにより、無関係な情報を削除し、オプションで精度を下げることで、SVGのファイルサイズを減らすことができます。

于 2012-12-24T03:06:51.017 に答える