Fixed a IndexOutOfBoundsException when residual weights are present
This commit is contained in:
parent
893741701b
commit
5d729af1c4
@ -291,27 +291,30 @@ public class MeshHelper extends AbstractBlenderHelper {
|
|||||||
Structure defbase = (Structure) parent.getFieldValue("defbase");
|
Structure defbase = (Structure) parent.getFieldValue("defbase");
|
||||||
List<String> groupNames = new ArrayList<String>();
|
List<String> groupNames = new ArrayList<String>();
|
||||||
List<Structure> defs = defbase.evaluateListBase();
|
List<Structure> defs = defbase.evaluateListBase();
|
||||||
for (Structure def : defs) {
|
|
||||||
groupNames.add(def.getFieldValue("name").toString());
|
if(!defs.isEmpty()) {
|
||||||
}
|
for (Structure def : defs) {
|
||||||
|
groupNames.add(def.getFieldValue("name").toString());
|
||||||
|
}
|
||||||
|
|
||||||
Pointer pDvert = (Pointer) meshStructure.getFieldValue("dvert");// dvert = DeformVERTices
|
Pointer pDvert = (Pointer) meshStructure.getFieldValue("dvert");// dvert = DeformVERTices
|
||||||
if (pDvert.isNotNull()) {// assigning weights and bone indices
|
if (pDvert.isNotNull()) {// assigning weights and bone indices
|
||||||
List<Structure> dverts = pDvert.fetchData();
|
List<Structure> dverts = pDvert.fetchData();
|
||||||
for (Structure dvert : dverts) {
|
for (Structure dvert : dverts) {
|
||||||
Map<String, Float> weightsForVertex = new HashMap<String, Float>();
|
Map<String, Float> weightsForVertex = new HashMap<String, Float>();
|
||||||
Pointer pDW = (Pointer) dvert.getFieldValue("dw");
|
Pointer pDW = (Pointer) dvert.getFieldValue("dw");
|
||||||
if (pDW.isNotNull()) {
|
if (pDW.isNotNull()) {
|
||||||
List<Structure> dw = pDW.fetchData();
|
List<Structure> dw = pDW.fetchData();
|
||||||
for (Structure deformWeight : dw) {
|
for (Structure deformWeight : dw) {
|
||||||
int groupIndex = ((Number) deformWeight.getFieldValue("def_nr")).intValue();
|
int groupIndex = ((Number) deformWeight.getFieldValue("def_nr")).intValue();
|
||||||
float weight = ((Number) deformWeight.getFieldValue("weight")).floatValue();
|
float weight = ((Number) deformWeight.getFieldValue("weight")).floatValue();
|
||||||
String groupName = groupNames.get(groupIndex);
|
String groupName = groupNames.get(groupIndex);
|
||||||
|
|
||||||
weightsForVertex.put(groupName, weight);
|
weightsForVertex.put(groupName, weight);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
result.add(weightsForVertex);
|
||||||
}
|
}
|
||||||
result.add(weightsForVertex);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user