One more question. In the game files, I found only Ventress in the mask. In the game has only this model or unmasked version too? And where if it so?AceWell wrote:i have all game files, but i only research dme files because i am only interested in the models and textures
Important information: this site is currently scheduled to go offline indefinitely by end of the year.
Star Wars: Clone Wars Adventures (*.dme)
-
- beginner
- Posts: 39
- Joined: Mon Nov 02, 2015 6:24 pm
- Has thanked: 23 times
- Been thanked: 3 times
Re: Star Wars: Clone Wars Adventures (*.dme)
-
- VIP member
- Posts: 1330
- Joined: Wed Nov 05, 2008 12:16 pm
- Has thanked: 2710 times
- Been thanked: 884 times
Re: Star Wars: Clone Wars Adventures (*.dme)
i only see a partial face for the Dathomir outfit like the one seen in the first picture
http://cwa.wikia.com/wiki/Asajj_Ventress
Char_AsajjHead_LOD0.dme extracted from AssetsW_001 and
goes with Char_AsajjBody_LOD0.dme from AssetsW_002
http://cwa.wikia.com/wiki/Asajj_Ventress
Char_AsajjHead_LOD0.dme extracted from AssetsW_001 and
goes with Char_AsajjBody_LOD0.dme from AssetsW_002
-
- beginner
- Posts: 39
- Joined: Mon Nov 02, 2015 6:24 pm
- Has thanked: 23 times
- Been thanked: 3 times
Re: Star Wars: Clone Wars Adventures (*.dme)
Guys, maybe someone knows, is it possible to download somewhere the game or pack archives?
-
- beginner
- Posts: 29
- Joined: Fri Jun 12, 2015 5:17 am
- Has thanked: 5 times
Re: Star Wars: Clone Wars Adventures (*.dme)
Excuse me, but I am looking for the sound effects to this game. Does anybody have access to the original sound archives, and if so, how can I access them?
-
- mega-veteran
- Posts: 215
- Joined: Sat Sep 24, 2011 7:06 pm
- Has thanked: 78 times
- Been thanked: 32 times
Re: Star Wars: Clone Wars Adventures (*.dme)
So I've recently been attempting to add bone support to this (I hope this is okay with you AceWell) and have gotten somewhere but still haven't managed to get proper positions on bones, any chance someone could look? This is the part of the script I added in:
It overall looks like it gets good positioning on heads although not at the position of the mesh, but it is very wrong on bodies. I could just be reading the data for bones completely wrong because I'm not familiar with how to read them properly, but any help is appreciated on how to do that. I've attached both bone files for the characters shown in the images.
Code: Select all
if (rapi.checkFileExists(skelFile)):
sk = rapi.loadIntoByteArray(skelFile)
sk = NoeBitStream(sk)
nameList = []
parentList = []
boneList = []
mtxList = []
sk.seek(0x08, NOESEEK_ABS)
skipCount = sk.readUInt()
currentPos = sk.tell()
skip = sk.readBytes(skipCount)
boneCount = sk.readUInt()
print(boneCount)
sk.seek(currentPos)
for i in range(boneCount):
boneName = sk.readString()
#print(boneName)
nameList.append(boneName)
skip = sk.readBytes(4)
for i in range(boneCount):
skip = sk.readBytes(4)
parent = sk.readUByte()
skip = sk.readBytes(3)
parentList.append(parent)
for i in range(boneCount):
unk = sk.readFloat()
rot = NoeQuat(sk.read("4f"))
scale = sk.read("3f")
unk2 = sk.readFloat()
posX, posY, posZ = sk.read("3f")
#print(pos)
boneMtx = rot.toMat43().inverse()
boneMtx[0] *= scale[0]
boneMtx[1] *= scale[1]
boneMtx[2] *= scale[2]
boneMtx[3] = NoeVec3((posX, posY, posZ))
#print(posY)
print(sk.tell())
mtxList.append(boneMtx)
newBone = NoeBone(i, nameList[i], mtxList[i], None, parentList[i])
boneList.append(newBone)
You do not have the required permissions to view the files attached to this post.
-
- mega-veteran
- Posts: 162
- Joined: Fri Oct 16, 2015 8:05 pm
- Has thanked: 6 times
- Been thanked: 78 times
Re: Star Wars: Clone Wars Adventures (*.dme)
ugh. ehh... how do i get noesis to see the skelly file? i tried the local and absolute path, but it doesn't work, damnit.
btw. tab indents pls. your space code differs from ace's spaces. and tabs are easier to track and manage/count for the parser to interpret. plus the current script doesn't read the boneweights and indices anymore. i have another (the older) version of the script tho.
Code: Select all
if (rapi.checkFileExists(str("D:\starwars\models\cwa_xtr_wip\ahsokaV2\Char_HumanFemaleBody.dsk"))):
print("skelly found")
sk = rapi.loadIntoByteArray(str("D:\starwars\models\cwa_xtr_wip\ahsokaV2\Char_HumanFemaleBody.dsk"))
-
- mega-veteran
- Posts: 215
- Joined: Sat Sep 24, 2011 7:06 pm
- Has thanked: 78 times
- Been thanked: 32 times
Re: Star Wars: Clone Wars Adventures (*.dme)
Code: Select all
def noepyLoadModel(data, mdlList):
ctx = rapi.rpgCreateContext()
#skelloading
baseName = rapi.getExtensionlessName(rapi.getLocalFileName(rapi.getLastCheckedName()))
print(baseName)
skelFile = rapi.getDirForFilePath(rapi.getInputName()) + baseName + ".dsk"
It also needs this at the end instead of just mdlList.append(mdl)
Code: Select all
mdlList.append(mdl); mdl.setBones(boneList)
-
- mega-veteran
- Posts: 162
- Joined: Fri Oct 16, 2015 8:05 pm
- Has thanked: 6 times
- Been thanked: 78 times
Re: Star Wars: Clone Wars Adventures (*.dme)
got it. manual debug right now. the whole thing should be done using the adr files and all files dumped in a single folder to be able to load all files directly. i only got the bone relationships sorta figured. there're possibly a bone_id -1 (FFFF) and a parent_id -1 (FFFF) too, potentially unparented bones. the other offset is directly into the bonename table. i still got no clue howto assemble the matrices. i'm a noob when it comes to this. i could math that there are 12 floats per bone tho. could be a 4x3 or 3x4 matrix, depending how you get the translation vector in there. using a quaternion you have 7, 3 for translation and maybe 1 for the scale, so... this doesn't make alot of sense to me. anyway... the bonetable code
Code: Select all
def noepyLoadModel(data, mdlList):
ctx = rapi.rpgCreateContext()
if (rapi.checkFileExists(skellyfile)):
print("skelly found")
sk = rapi.loadIntoByteArray(skellyfile)
sk = NoeBitStream(sk)
nameList = []
parentList = []
boneList = []
mtxList = []
sk.seek(0x08, NOESEEK_ABS)
ofsrel_bonestruct = sk.readUInt()
BNametable = sk.tell()
sk.seek(ofsrel_bonestruct, NOESEEK_REL)
boneCount = sk.readUInt()
print(boneCount)
currentbone = sk.tell()
for i in range(boneCount):
sk.seek(currentbone, NOESEEK_ABS)
ofsrel_BName = sk.readUInt()
boneId = sk.readUShort()
parent = sk.readUShort()
parentList.append(parent)
currentbone = sk.tell()
sk.seek(BNametable)
sk.seek(ofsrel_BName, NOESEEK_REL)
boneName = sk.readString()
print(boneName)
nameList.append(boneName)
for i in range(boneCount):
unk = sk.readFloat()
...
-
- mega-veteran
- Posts: 215
- Joined: Sat Sep 24, 2011 7:06 pm
- Has thanked: 78 times
- Been thanked: 32 times
Re: Star Wars: Clone Wars Adventures (*.dme)
Yeah my issue is the bone reading, I knew there were 12 floats per bone but I don't know which would be the rotation, position etc. I've tried various options aswell as just reading the matrix with Mat43 but it still results in the same thing I have right now.
-
- mega-veteran
- Posts: 162
- Joined: Fri Oct 16, 2015 8:05 pm
- Has thanked: 6 times
- Been thanked: 78 times
Re: Star Wars: Clone Wars Adventures (*.dme)
yo. same here. but i got somewhere removing all the matrix stuff. using an identity mat to pin the locations. your script did output weird stuff. and i forgot to save the offset after the bone array. the head bones were sorta pinned by the L and R X values. for sure the array location without all the matrix crap. still gotta figure where the delta or 'local translation' is. some parent child relations seem wrong too. i pretty much don't care about the rotation.
i'm not sure if this dislocation may be intentional even. i'm not sure about the math invloved but if the original pose is not stored and just uses the animation files this may still work without the tpose skelly. kinda protection. i'll try to figure it out anyway tho.
i'm not sure if this dislocation may be intentional even. i'm not sure about the math invloved but if the original pose is not stored and just uses the animation files this may still work without the tpose skelly. kinda protection. i'll try to figure it out anyway tho.
Last edited by episoder on Fri Sep 21, 2018 5:53 pm, edited 1 time in total.
-
- mega-veteran
- Posts: 215
- Joined: Sat Sep 24, 2011 7:06 pm
- Has thanked: 78 times
- Been thanked: 32 times
Re: Star Wars: Clone Wars Adventures (*.dme)
Yeah that result is what I got with mine, the root and neck bones seem to be accurate in positioning, the X axis on the other bones seem accurate but everything else for those doesn't, which makes me confused.
Looks like the face positions are stored in the .dme file actually, but doesn't work for body. This is manual seeking in the file atm, gotta code in getting to it properly.
Looks like the face positions are stored in the .dme file actually, but doesn't work for body. This is manual seeking in the file atm, gotta code in getting to it properly.
-
- mega-veteran
- Posts: 162
- Joined: Fri Oct 16, 2015 8:05 pm
- Has thanked: 6 times
- Been thanked: 78 times
Re: Star Wars: Clone Wars Adventures (*.dme)
i got the head looking good. and a nice start at the body. parent recursion. i guess the rotation matters.
wip script if you wanna mess with it.
wip script if you wanna mess with it.
You do not have the required permissions to view the files attached to this post.
-
- mega-veteran
- Posts: 162
- Joined: Fri Oct 16, 2015 8:05 pm
- Has thanked: 6 times
- Been thanked: 78 times
Re: Star Wars: Clone Wars Adventures (*.dme)
yo. it was a weird thing to find anyway. i figured it out when i messed with the boneids. i added those and the head added to the neck was at the right place. but it didn't work any further. i had to try to recurse it. basicly what it does is adding what seems local bone transforms based on their parent bones.
recursion itself explained
1) i = toe -> search parent -> finds foot -> function calls itself with i paremeter foot
2) i = foot -> search parent -> finds calf -> function calls itself with i parameter calf
3) i = calf -> searhc parent -> finds thigh -> function calls itself with i parameter thigh
...
until there's no parent in the chain, which is the root bone. it's maybe just stupid code. now that i think about it could potentially be done with a while loop too. i just didn't think about that i guess.
recursion itself explained
Code: Select all
def recursion(i)
parent = parentList[i]
if parent >= 0:
recursion(parent)
2) i = foot -> search parent -> finds calf -> function calls itself with i parameter calf
3) i = calf -> searhc parent -> finds thigh -> function calls itself with i parameter thigh
...
until there's no parent in the chain, which is the root bone. it's maybe just stupid code. now that i think about it could potentially be done with a while loop too. i just didn't think about that i guess.
-
- double-veteran
- Posts: 640
- Joined: Fri Jul 08, 2011 10:36 am
- Has thanked: 65 times
- Been thanked: 898 times
Re: Star Wars: Clone Wars Adventures (*.dme)
9 floats for 3x3 local rotation matrix, 3 floats for local position vector.
@episoder Your approach is correct, as you need to reach the world space coordinates, but it can be achieved more easily using matrices. Load 12 floats as NoeMat43. Multiply bone matrix with the parent in recursion until, you reach the top. You need the rotation to load the skeleton properly anyway.
@episoder Your approach is correct, as you need to reach the world space coordinates, but it can be achieved more easily using matrices. Load 12 floats as NoeMat43. Multiply bone matrix with the parent in recursion until, you reach the top. You need the rotation to load the skeleton properly anyway.
You do not have the required permissions to view the files attached to this post.