Seite 2 von 2
Re: Entity umfärben nicht (einfach so) möglich?
Verfasst: 12.04.2013 23:35
von MightyMAC
Na klar, daß mit der Tabelle klappt, wenn ich die Materialien in PB erstelle, aber die Materialien werden im Regelfall aus Materialscripts ausgelesen, was PB ja automatisiert macht (mit #PB_Material_None als MaterialID bei CreateEntity()) und da habe ich doch keine Materialnummer die ich einer MaterialID zuordnen kann, oder hab ich da was verpasst?
Re: Entity umfärben nicht (einfach so) möglich?
Verfasst: 13.04.2013 00:31
von PMV
Ha, da merkt man wieder das ich schon viel zu lange pause mache.
Du musst das über nen kleinen "Umweg" machen, mit
so erzeugst dir nen Material, welches auch tatsächlich
als PB-Object existiert und das weist dann deinem Entity zu,
anstelle es per #PB_Material_None von OGRE nur aus dem
Script zu laden.
Ich finds aber erlich gesagt ganz praktisch so, denn so spart
PB (hoffentlich) das Erstellen der in den meisten Fällen unnötigen
PB-Object-Nummer für Materials, wenn diese nur von OGRE
intern geladen werden.
MFG PMV
Re: Entity umfärben nicht (einfach so) möglich?
Verfasst: 13.04.2013 07:46
von MightyMAC
Da habe ich also in der Tat was verpasst!
Mit GetScriptMaterial() könnte ich tatsächlich was machen. Allerdings fehlt mir dann noch die Info welches Material von einem Entity benötigt wird, das Mesh-File selbst kann ich ja nicht auslesen um zu sehen auf welches Material es zugreift. Aber wenn ich mir einen eigenen Parser für die Materialscripts baue, könnte ich eine Liste aller Materialien erstellen die vorhanden sind und den Benutzer über eine ComboBox das passende Material zum Entity auswählen lassen. Ist zwar nicht optimal, sollte aber funktionieren. Danke für den Tipp!
Re: Entity umfärben nicht (einfach so) möglich?
Verfasst: 13.04.2013 09:35
von Chimorin
Das Material, welches von deinem Mesh benutzt wird, wenn du PB_Material_None setzt, heißt genau so wie dein Mesh heißt. Sonst wird es nicht gefunden.
Hast du überhaupt schon ein Mesh erstellt? Tut sich mir da die Frage auf, denn dann müsste man das eig wissen.
Re: Entity umfärben nicht (einfach so) möglich?
Verfasst: 13.04.2013 17:25
von PMV
Bananenfreak hat geschrieben:Das Material, welches von deinem Mesh benutzt wird, wenn du PB_Material_None setzt, heißt genau so wie dein Mesh heißt. Sonst wird es nicht gefunden.
Hast du überhaupt schon ein Mesh erstellt? Tut sich mir da die Frage auf, denn dann müsste man das eig wissen.
Im Mesh selber steht relativ am Anfang sogar im Klartext drinne,
welches Material genutzt wird. Allerdings gibs auch so was wie
Submeshes, mit eigenen Materials. Die können so natürlich nicht
genutzt werden fällt mir grad ein, aber das ist nen anderes Thema.
@MightyMAC
Sofern du die Meshes und Materials selber erstellst, würde ich einfach
noch ne Liste in eine Datei schreiben, die Mesh-Datei und Materialname
zusammen bringen. Da OGRE aber Open Source ist sollte allerdings
auch irgend wie auffindbar sein, wie genau der Aufbau eines *.mesh
ist. Da das Material recht am Anfang der Datei steht, ist das vielleicht
auch garnicht so aufwendig.
MFG PMV
PS: solltes du tatsächlich en Weg über das Auslesen der Mesh-Datei
gehen wäre ich an der Lösung auch sehr interessiert.

mit Quellenangaben

Re: Entity umfärben nicht (einfach so) möglich?
Verfasst: 13.04.2013 17:41
von MightyMAC
Ich habe mir einige Meshes mal angesehen und die Aussage von Bananenfreak ist, wie auch PMV gerade geschrieben hat, nicht ganz richtig. Bei meinen mit Blender2Ogre exportierten Meshes könnte man so arbeiten, da jedes Sub-Mesh als eigene *.mesh-Datei gespeichert wird. Wenn ich mir jedoch den Sindbad-Charakter aus dem PureBasic-Examples-Ordner ansehe funktioniert das wieder nicht.
Hier eins von mir - Wiese.mesh:
Code: Alles auswählen
// Wiese genrated by blender2ogre 0.5.9
material Wiese
{
receive_shadows on
technique
{
pass Wiese
{
ambient 0.800000011920929 0.800000011920929 0.800000011920929 1.0
diffuse 0.6400000190734865 0.6400000190734865 0.6400000190734865 1.0
specular 0.0 0.0 0.0 1.0 12.5
emissive 0.0 0.0 0.0 1.0
alpha_to_coverage off
colour_write on
cull_hardware clockwise
depth_check on
depth_func less_equal
depth_write on
illumination_stage
light_clip_planes off
light_scissor off
lighting on
normalise_normals off
polygon_mode solid
scene_blend one zero
scene_blend_op add
shading gouraud
transparent_sorting on
texture_unit
{
texture GRASS2.JPG
tex_address_mode wrap
scale 0.1 0.1
colour_op modulate
}
}
}
}
Hier ein Auszug aus dem Sindbad-Material:
Code: Alles auswählen
material Sinbad/Body
{
receive_shadows on
technique
{
pass
{
ambient 0.75 0.75 0.75
diffuse 1 1 1 1
texture_unit
{
texture sinbad_body.tga
}
}
}
}
material Sinbad/Gold
{
receive_shadows on
technique
{
pass
{
ambient 0.75 0.75 0.75
diffuse 0.8 0.8 0.8 1
specular 0.3 0.3 0.2 5.5
texture_unit
{
texture sinbad_clothes.tga
}
}
}
}
material Sinbad/Sheaths
{
receive_shadows on
technique
{
pass
{
ambient 0.75 0.75 0.75
diffuse 1 1 1 1
specular 0.2 0.1 0.1 1.0 50.0
texture_unit
{
texture sinbad_sword.tga
}
}
}
}
Die Sache mit der Liste der Zuordnungen in einer Datei wäre für mich OK, ich weiß nur nicht ob man hinterher vom Benutzer des Tools sowas verlangen kann. Und die ganze Aufregung nur damit man ein Entity im Tool markieren kann...
Re: Entity umfärben nicht (einfach so) möglich?
Verfasst: 13.04.2013 19:00
von Chimorin
Das heißt, dass bei euch die Materialien nicht so heißen wie die Mesh-Dateien? Ich mache das eh über einen etwas umständlichen Weg, Modellieren in Wings3D, exportieren nach DEled3D und dort wieder exportieren als Mesh (Der Exporter für Wings3D hat irgendwie nicht funktioniert).
So wie ich das verstehe, kombiniert ihr entweder nicht alle Sub-Meshes zu einem Großen und/oder jede Fläche mit einer anderen Textur ist ein eigenes Mesh?
Bei mir sehen die Materialien wie das von Sinbad aus (Natürlich nicht genau so ^^). Bei Sinbad kannst du einfach mein rotes Material draufmachen, dann ist er gesamt Rot und durchscheinend.
Das mit den mehreren Meshes hört sich interessant an, schreib da mal mehr dazu, vllt kann ich das auch noch gebrauchen.
(Z.B.: Sind die mehreren Meshes dann trotzdem 1 Entity mit 1 Physikbody oder getrennt?)
Re: Entity umfärben nicht (einfach so) möglich?
Verfasst: 13.04.2013 19:33
von MightyMAC
Ich modeliere in Blender und habe einige Tests mit mit Blender2Ogre (ein Python-Script für Blender) gemacht. Dieses exportiert ganze Szenen, d.h. es exportiert einzelne Meshes mit Materialien und Skeletten und legt dazu eine *.scene-Datei mit der Szenen-Hierarchie, Lichtern und allem an. Diese ist im XML-Format und ich hatte mir dafür mal einen Importer gebaut (den ich natürlich gerade mal überhaupt nicht mehr wiederfinde... wie immer...). So wie ich das sehe sortiert der Exporter die Inhalte nach Materialien und speichert dann die Einzelteile eines Meshs - die andere Exporter anscheinend als "echte" Sub-Meshes in einer Datei abspeichern - als seperate Dateien ab, die ich dann über die Szene-Datei wieder zusammensetze. Mit Physik hatte ich mich bisher noch gar nicht beschäftigt, aber ich hätte da jetzt auch bedenken, daß das vernünftig funktioniert, da ja jedes Einzelteil wohl auch einen eigenen Physik-Body haben müsste. Vielleicht kann man das Exportverhalten aber auch im Export-PlugIn beeinflussen, ich habe jetzt die Einstellungen nicht mehr so im Kopf (ist schon wieder ein bisschen her). Sollte ich mir bei Gelegenheit noch einmal ansehen.