Jump to content
Unity Insider Forum

AssetBundles - Texturen falsch geladen


Karthoo

Recommended Posts

Hallo zusammen,

Ich verwende AssetBundles, um Assets auf einem Webserver zu speichern. Aber wenn ich sie in meine 3D-Anwendung lade, passieren ganz merkwürdige Dinge mit den Texturen:

Bevor ich sie in AssetBundle gespeichert habe:

upload_2022-6-12_11-14-29.png

 

Nach dem Laden:

upload_2022-6-12_11-15-34.png

 

Hat jemand eine Idee, was das Problem sein könnte?

Link zu diesem Kommentar
Auf anderen Seiten teilen

Moin moin!

Ehrlich gesagt sieht mir das eher nach verhunzter UV-Map aus als nach kaputten Texturen. Gehe mal zu diesem kaputten Zustand im Editor und stelle die Scene View auf "Shaded Wireframe". Dann siehst du deine Triangles über die Textur gelegt. Wenn mein Verdacht stimmt, dann solltest du die Kanten der Dreiecke entlang der Kanten deiner Textur auf dem Boden erkennen können.

Alternativ, und das sehe dann genauso aus, geht deine UV-Map über das Einheitsquadrat hinaus, was ja okay wäre. Im oberen Bild wäre dann aber vielleicht die Textur auf Repeat gestellt, und im unteren auf Clamp.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hi Sascha,

Danke für deine Antwort!

Du hast Recht, das scheint dann ein UV-Map-Problem zu sein (musste mich da erst einlesen, was das überhaupt ist). Die merkwürdigen Strukturen stimmen mit den Dreiecken überein: 

image.png.78abc5ece9750b1d73509deb3f8a686c.png

Ist das dann eher ein Fehler beim Erzeugen der AssetBundles oder würdest du das Problem eher beim "Instantiaten" vermuten? 

Link zu diesem Kommentar
Auf anderen Seiten teilen

Schwer zu sagen. Sowohl Dinge aus AssetBundles zu laden als auch Dinge zu instanziieren sollte weder die UV-Map kaputt machen, noch die Import Settings der Textur umstellen. Was hast du denn alles im AssetBundle drin?

  • 3D-Modell
  • Material
  • Textur(en)

?

Link zu diesem Kommentar
Auf anderen Seiten teilen

Habe in den AssetBundles nur verschiedene Assets (Mesh + Material) drin

Ich erzeuge sie so:

BuildPipeline.BuildAssetBundles("Assets/Kacheln", buildMap, BuildAssetBundleOptions.None, BuildTarget.StandaloneWindows);

und instanziiere sie so:

GameObject g = bundle.LoadAsset<GameObject>(assetName);
var temp = Instantiate(g) as GameObject;

 

Link zu diesem Kommentar
Auf anderen Seiten teilen

vor einer Stunde schrieb Karthoo:

Habe in den AssetBundles nur verschiedene Assets (Mesh + Material) drin

Ja, das ist schon klar :)

Die Textur ist also nicht mit drin? Die Textur ist nämlich das, so der "Wrap Mode" eingestellt ist. Ist er auf "Clamp" statt auf "Repeat", könnte das so aussehen wie bei dir.

An deinem Code ist jedenfalls soweit nichts auszusetzen. Kannst aber das "as GameObject" weglassen.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Habe das nochmal in einem neuen Projekt ausprobiert, in dem die Texturen nirgends gespeichert waren und sie wurden geladen. Die Texturen müssen also auch in den AssetBundles enhalten sein. Dort, wo ich die Bundles erzeuge, ist der Wrap Mode aber auch auf Repeat gesetzt. Kann ich den Wrap Mode irgendwie beim Instanziieren oder Bundle Erzeugen nochmal ändern?

Link zu diesem Kommentar
Auf anderen Seiten teilen

Klingt doch schonmal gut! Aber ja, du solltest die Entscheidung, ob das im Asset Bundle mit drin ist, nicht davon abhängig machen (müssen). Eigentlich sollte das auch wunderbar so gehen.

vor 3 Stunden schrieb Karthoo:

Kann ich den Wrap Mode irgendwie beim Instanziieren oder Bundle Erzeugen nochmal ändern?

Beim Instanziieren könnte hiermit klappen: Texture.wrapMode

Beim Bundle Bauen klingt aber schlauer. Da kannst du es auch mit Texture.wrapMode versuchen, alternativ mit TextureImporter.wrapMode.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Archiviert

Dieses Thema ist jetzt archiviert und für weitere Antworten gesperrt.

×
×
  • Neu erstellen...