Page 2 of 2

Re: Tales of Zestiria

Posted: Tue Sep 06, 2016 9:05 am
by dian333
before look down
let me explore the reason FVFsize change from 28 to 32

when FVFsize==28

Code: Select all

structrue is
position :   x  y  z
normal? :   float float float
bone index:   for example (17) / 00 /00/ 00


when FVFsize==32 (from 0x594c)

Code: Select all

structrue is
position :   x  y  z
normal? :   float float float
bone index1:   for example (13)/bone index2:   for example (12) /00 00
weight:     float                              for example   0.8    0.13    0.52  0.9  0.5   0.68 0.2  .......

Re: Tales of Zestiria

Posted: Tue Sep 06, 2016 9:20 am
by dian333
back to
offset 0xb28 : {3A 01 00 00}= 314
so 0x594c+314x FVFsize(32) =0x808c

FVF size ==36

Code: Select all

structrue is
position :   x  y  z
normal? :   float float float
bone index1:   for example (0x00)/bone index2:   for example (0x07) /bone index2:   for example (0x08)/ 00
weight1:     float                for example       0.2                
weight2:     float                for example       0.4
that it is say
we can think 0.4 /0.2/0.4 is weight to bone(bone_index) 0x00/0x07/0x08
or 0.2/0.4/0.4

Re: Tales of Zestiria

Posted: Tue Sep 06, 2016 10:30 am
by shakotay2
sry to interrupt you (see you're using this thread as kinda memo pad :D )

I modified chiri's C# code to directly import your uploaded .dat file:
0b8f_14.jpg
There were 23 objects contained, most of them didn't provide proper vertices for some unknown reasons (FIs ok, so far).

had to expand this line -which I did not fully understand- for those objects with proper vertices, by 12 and -1:
if ((invalidPos == 6) || (invalidPos == 12) || (invalidPos == -1))

Sadly I didn't get correct uvs, so I've suspended further programatical investigations.

Re: Tales of Zestiria

Posted: Tue Sep 06, 2016 11:25 am
by dian333
this is the file in DLC 008 "TOMDLB_D"and"TOMDLP_P":
https://mega.nz/#!xowBHIYB!RaLQ2XBeDC0_ ... HXEvQUxMN8

maybe, here be 1-2 cloth model
(i find one texture of cloth only,and i can't find out what is the file name mean or which model in file)

Re: Tales of Zestiria

Posted: Wed Sep 07, 2016 11:46 am
by dian333
in "00000c6f"
write a python code in noesis ,but the scale of the bone is too large.
pull it(export to .dae format) into Blender

Re: Tales of Zestiria

Posted: Thu Sep 08, 2016 6:48 pm
by dian333
bone_name
bone_parent
bone_matrix

vert_number
vert_data offset
face_vertindex_offset
face_vertindex_reading_lenth

vert_relate_bone_Index and vert_weight
==============================
these have been find out
but, the weight (<bone_index number) can't diretly read float into noesis data,need a "1- float" --calculate

Code: Select all

                                            can't use rapi.  
                                                     rapi.rpgBindBoneWeightBufferOfs(VertBuff, noesis.RPGEODATA_FLOAT, vertSize[i], Weightpos, 4)
So,
copy python code from "fmt_mdl.py" (TalesGFScripts)

Code: Select all

about weight
for n in range(list1[0]):
      ....
      skinIndiceList.append([v4[0]])
      skinWeightList.append([1.0])
for n in range(list1[1]):
      ......
      v5=g.readFloat()
      skinIndiceList.append(v4[:2])
      skinWeightList.append([v5,1.0-v5])
#"and so on"
     ...
     skinWeightList.append([v5,v6,1.0-v5-v6])
     ....
     skinWeightList.append([v5,v6,v7,1.0-v5-v6-v7])
= =sadly, "fmt_mdl.py" don't have complete code to add weight ,only ###code
like "##mesh.skinWeightList.append([1.0])"

Re: Tales of Zestiria

Posted: Thu Sep 08, 2016 7:02 pm
by dian333
maybe, changing the code in "__NPExample.txt" is a way.
——build a extra weightbuff to be "rapi.rpgBindBoneWeightBuffer()"ed

Code: Select all

if numWeights > 0:
			vwList = []
			for j in range(0, numWeights):
				vwNum = bs.readInt()
				bidx = []
				bwgt = []
				for k in range(0, vwNum):
					bidx.append(bs.readInt())
				for k in range(0, vwNum):
					bwgt.append(bs.readFloat())
				vwList.append(NoeVertWeight(bidx, bwgt))
			fw = NoeFlatWeights(vwList)
			rapi.rpgBindBoneIndexBuffer(fw.flatW[:fw.weightValOfs], noesis.RPGEODATA_INT, 4*fw.weightsPerVert, fw.weightsPerVert)
			rapi.rpgBindBoneWeightBuffer(fw.flatW[fw.weightValOfs:], noesis.RPGEODATA_FLOAT, 4*fw.weightsPerVert, fw.weightsPerVert)
if vert is affect by only one bone:
if vert is affect by two bones:
if vert is affect by three bones:
if vert is affect four bones:

Code: Select all

         weight_after_calculate = .....
         bidx.append(....)
         bwgt.append(weight_after_calculate)

Re: Tales of Zestiria

Posted: Fri Sep 09, 2016 3:31 pm
by dian333
connect to http://imgur.com/ just waste time

Re: Tales of Zestiria

Posted: Fri Sep 09, 2016 3:41 pm
by dian333
can not find main bone of character,there are only some bones relate to (physical simulation)collision and joint ,and its' setting parameter.
and miss the character‘s face model(hair and weapon in another .dpd).
vertex data -bone_index and weight must be connected to main bone.
maybe have to download the game (size 11G)...

Re: Tales of Zestiria

Posted: Fri Sep 09, 2016 3:44 pm
by dian333
mesh detail

Re: Tales of Zestiria

Posted: Wed Sep 14, 2016 6:26 pm
by dian333
alisha_bone_all in file "00000064.dpd" (...PK1\WIN\TOMDLB_D\)
alisha asassin chest in file "00000a63.dpd" and "00000a64.dc5"(UV and face index data)

waste some time to find correct Bone__Pallet (Bone_map ,that is ,index which bone used in mesh -> bone_index in all Bone)

Re: Tales of Zestiria

Posted: Tue Mar 21, 2017 2:13 pm
by kotaxzz1
running that code and i got invalid vertex index in max with no texture out :o

Re: Tales of Zestiria

Posted: Fri Apr 21, 2017 5:56 am
by Escope12
dian333 wrote:alisha_bone_all in file "00000064.dpd" (...PK1\WIN\TOMDLB_D\)
alisha asassin chest in file "00000a63.dpd" and "00000a64.dc5"(UV and face index data)

waste some time to find correct Bone__Pallet (Bone_map ,that is ,index which bone used in mesh -> bone_index in all Bone)
How did you do that?

Re: Tales of Zestiria

Posted: Mon May 29, 2017 5:43 pm
by dian333
Escope12 wrote:
dian333 wrote:alisha_bone_all in file "00000064.dpd" (...PK1\WIN\TOMDLB_D\)
alisha asassin chest in file "00000a63.dpd" and "00000a64.dc5"(UV and face index data)

waste some time to find correct Bone__Pallet (Bone_map ,that is ,index which bone used in mesh -> bone_index in all Bone)
How did you do that?
noesis code unfinish
last edited at 2016years 9th month