Jetzt hab ich den Mesh vom 3ds Format in eine Obj-Datei konvertiert.
Habe mir den Cr2-Editor gedownloadet und die Objektdatei dort geladen. Dort gibt es den Button "Save as" dort habe ich als Cr2 Datei angegeben. Gespeichert wird aber immer eine Obj-Datei ???!!!!!!
... also ich seh schon ohne Poser kann ich nicht so lange ..... Daz ist zwar schon ganz gut aber man stößt eben doch ganz schnell auf Grenzen. Lieben Dank für Deine Antwort. Dann wurschtel ich halt mal weiter.
so schwer ist das nicht, eine cr2 zu erstellen! oder andersherum, poser macht dir dabei mehr probleme als erleichterung der arbeitsschritte (stichwort grouping und rigging - da kommt nur müll raus)
du benötigst:
etwas basisliteratur: Kuroyumes cr2 Spezifikation die Seite war vorhin nicht erreichbar aber ich denke als Anbieter der recht populären interPoser Software wird das nur kurzzeitig so bleiben
ein cr2 Gerüst (zb V3-BLANK.cr2 für Figuren oder irgend ein kleidungsstück bzw beweglicher gegenstand) dieses gerüst muss bereinigt werden, dazu später mehr
deine objektdatei muss in gruppen zerlegt werden und zwar exakt an den stellen, die nachher einzelne bones darstellen (bei den figuren u.a. toe, foot, shin, thigh, hip, abdomen usw...) diese gruppierung kannst du manuell in deinem mesher machen, bei figuren empfiehlt es sich (es sollte dort ziemlich exakt mit den bones der figur harmonieren), die figur mit im mesher zu laden und anhand ihrer gruppen zu schneiden (die neuen gruppen) bei simplen dingen wie zb einer eisenkette wären die kettenglieder sinnvolle bones, bei einer tür deren scharniere, einem rad dessen achse usw...)
diese gruppen müssen mit exportiert werden, du wirst herausfinden, wie das dein mesher handhabt, die funktion sollte in allen vorhanden sein
zurück zur cr2.
grob gibt es dort drei abschnitte
1) die bone- und geometriedeklaration 2) die boneparameter, ggf diverse morphs 3) das figur-rigging (welcher teil gehört wohin und interagiert mit welchem anderen) und die materialsektion
4.01 steht für Poser 4 mit SP1 (und ist aus Kompatibilitätsgründen empfohlen) (4.2 - Poser4Pro) (5 - Poser 5 usw)
Code
figureResFile :Runtime:Geometries:Vendor:Package:mesh.obj
actor BODY:1
{
}
actor hip:1
{
storageOffset 0 0 0
geomHandlerGeom 13 hip
}
zuerst wird der ort der objektdatei angegeben Vendor ersetzt du zweckmässigerweise mit deinem Poserlandschaftsnick und weil du bestimmt irgendwann mal mehrere päckchen geschnürt haben wirst, gleich noch dessen name als unterordner um etwas system in das ganze chaos zu bringen
der pseudomesh namens BODY (ein reserviertes wort) ist die rootnode deiner figur und wird später durch den namen der figur im hierarchieditor ersetzt. diese node besitzt KEINE geometriedaten, sie existiert rein virtuell
danach geht es weiter mit echter geometrie storageOffset 0 0 0: einfach so übernehmen - referiert werden hier die x/y/z-achsen
geomHandlerGeom 13 hip: 13 ist eine interne poserzahl die eine figur repräsentiert, hip ist der name der meshgruppe, die hier deklariert wird. der name ist beliebig, MUSS aber mit der gruppenbezeichnung in der objektdatei übereinstimmen (gross/kleinschreibung beachten! Hip und hip sind zwei verschiedene gruppen!!!)
die geometrie wird hier noch einmal aufgerufen (in abschnitt1 wurde sie lediglich poser bekanntgegeben, hier nun wird sie verwendet)
Code
actor BODY:1
{
name BODY
off
bend 1
dynamicsLock 1
hidden 0
addToMenu 1
castsShadow 1
includeInDepthCue 1
useZBuffer 1
parent UNIVERSE
creaseAngle 80
channels
{
groups
{
groupNode Transform
{
parmNode scale
parmNode xScale
parmNode yScale
parmNode zScale
parmNode yrot
parmNode xrot
parmNode zrot
parmNode xtran
parmNode ytran
parmNode ztran
}
}
zOffsetA zOffset
{
name GetStringRes(1028,38)
initValue 0
hidden 1
forceLimits 0
min -100000
max 100000
trackingScale 0.004
keys
{
static 1
k 0 0
}
interpStyleLocked 0
staticValue 0
}
yOffsetA yOffset
{
name GetStringRes(1028,37)
initValue 0
hidden 1
forceLimits 0
min -100000
max 100000
trackingScale 0.004
keys
{
static 1
k 0 0
}
interpStyleLocked 0
staticValue 0
}
xOffsetA xOffset
{
name GetStringRes(1028,36)
initValue 0
hidden 1
forceLimits 0
min -100000
max 100000
trackingScale 0.004
keys
{
static 1
k 0 0
}
interpStyleLocked 0
staticValue 0
}
propagatingScale scale
{
name scale
initValue 1
hidden 0
forceLimits 0
min 0.001
max 100000
trackingScale 0.004
keys
{
static 0
k 0 1
}
interpStyleLocked 0
}
propagatingScaleX xScale
{
name xScale
initValue 1
hidden 0
forceLimits 0
min 0.001
max 100000
trackingScale 0.004
keys
{
static 0
k 0 1
}
interpStyleLocked 0
}
propagatingScaleY yScale
{
name yScale
initValue 1
hidden 0
forceLimits 0
min 0.001
max 100000
trackingScale 0.004
keys
{
static 0
k 0 1
}
interpStyleLocked 0
}
propagatingScaleZ zScale
{
name zScale
initValue 1
hidden 0
forceLimits 0
min 0.001
max 100000
trackingScale 0.004
keys
{
static 0
k 0 1
}
interpStyleLocked 0
}
rotateY yrot
{
name yrot
initValue 0
hidden 0
forceLimits 0
min -100000
max 100000
trackingScale 1
keys
{
static 0
k 0 0
}
interpStyleLocked 0
}
rotateX xrot
{
name xrot
initValue 0
hidden 0
forceLimits 0
min -100000
max 100000
trackingScale 1
keys
{
static 0
k 0 0
}
interpStyleLocked 0
}
rotateZ zrot
{
name zrot
initValue 0
hidden 0
forceLimits 0
min -100000
max 100000
trackingScale 1
keys
{
static 0
k 0 0
}
interpStyleLocked 0
}
translateX xtran
{
name xtran
initValue 0
hidden 0
forceLimits 0
min -100000
max 100000
trackingScale 0.001
keys
{
static 0
k 0 0
}
interpStyleLocked 0
trackingScaleMult 1
}
translateY ytran
{
name ytran
initValue 0
hidden 0
forceLimits 0
min -100000
max 100000
trackingScale 0.001
keys
{
static 0
k 0 0
}
interpStyleLocked 0
trackingScaleMult 1.000000
}
translateZ ztran
{
name ztran
initValue 0
hidden 0
forceLimits 0
min -100000
max 100000
trackingScale 0.001
keys
{
static 0
k 0 0
}
interpStyleLocked 0
trackingScaleMult 1.000000
}
xOffsetB xTranB
{
name GetStringRes(1028,33)
initValue 0
hidden 1
forceLimits 0
min -100000
max 100000
trackingScale 0.004
keys
{
static 1
k 0 0
}
interpStyleLocked 0
staticValue 0
}
yOffsetB yTranB
{
name GetStringRes(1028,34)
initValue 0
hidden 1
forceLimits 0
min -100000
max 100000
trackingScale 0.004
keys
{
static 1
k 0 0
}
interpStyleLocked 0
staticValue 0
}
zOffsetB zTranB
{
name GetStringRes(1028,35)
initValue 0
hidden 1
forceLimits 0
min -100000
max 100000
trackingScale 0.004
keys
{
static 1
k 0 0
}
interpStyleLocked 0
staticValue 0
}
}
endPoint 0 0.74 0.25
origin 0 0 0
orientation 0 0 0
displayOrigin 0
displayMode USEPARENT
customMaterial 0
locked 0
backfaceCull 0
visibleInReflections 1
visibleInRender 1
displacementBounds 0
shadingRate 0.2
smoothPolys 1
}
Alles anzeigen
jetzt werden alle dials definiert (die rädchen), ebenso deren sichtbarkeit, der name und ggf versatzwerte. morphs würden auch hier reinkommen, die lassen wir aber erst mal weg, da morphs von hand eintragen einem flug durch ein wurmloch ähneln
alle in abschnitt 1 deklarierten bones (körperteile) müssen definiert werden (cut and paste)
addchild fügt alle bones zur figur hinzu, der bonename in der darauffolgenden zeile ist die jeweilige elternfigur/bone abdomen ist hier unterhalb von hip
weld deklariert das gelenk, wiederum relativ zur elternbone
dannach noch die materialsektion, die identisch zu der in einer pz2 datei ist