|
|
|
@ -32,6 +32,7 @@ |
|
|
|
|
package com.jme3.scene.plugins.blender.helpers.v249; |
|
|
|
|
|
|
|
|
|
import java.nio.FloatBuffer; |
|
|
|
|
import java.nio.ShortBuffer; |
|
|
|
|
import java.util.ArrayList; |
|
|
|
|
import java.util.HashMap; |
|
|
|
|
import java.util.List; |
|
|
|
@ -551,13 +552,14 @@ public class ModifierHelper extends AbstractBlenderHelper { |
|
|
|
|
Mesh clone = mesh.deepClone(); |
|
|
|
|
|
|
|
|
|
// getting buffers
|
|
|
|
|
FloatBuffer position = (FloatBuffer) mesh.getBuffer(Type.Position).getData(); |
|
|
|
|
FloatBuffer bindPosePosition = (FloatBuffer) mesh.getBuffer(Type.BindPosePosition).getData(); |
|
|
|
|
|
|
|
|
|
FloatBuffer clonePosition = (FloatBuffer) clone.getBuffer(Type.Position).getData(); |
|
|
|
|
FloatBuffer cloneBindPosePosition = (FloatBuffer) clone.getBuffer(Type.BindPosePosition).getData(); |
|
|
|
|
FloatBuffer cloneNormals = (FloatBuffer) clone.getBuffer(Type.Normal).getData(); |
|
|
|
|
FloatBuffer cloneBindPoseNormals = (FloatBuffer) clone.getBuffer(Type.BindPoseNormal).getData(); |
|
|
|
|
FloatBuffer position = mesh.getFloatBuffer(Type.Position); |
|
|
|
|
FloatBuffer bindPosePosition = mesh.getFloatBuffer(Type.BindPosePosition); |
|
|
|
|
|
|
|
|
|
FloatBuffer clonePosition = clone.getFloatBuffer(Type.Position); |
|
|
|
|
FloatBuffer cloneBindPosePosition = clone.getFloatBuffer(Type.BindPosePosition); |
|
|
|
|
FloatBuffer cloneNormals = clone.getFloatBuffer(Type.Normal); |
|
|
|
|
FloatBuffer cloneBindPoseNormals = clone.getFloatBuffer(Type.BindPoseNormal); |
|
|
|
|
ShortBuffer cloneIndexes = (ShortBuffer) clone.getBuffer(Type.Index).getData(); |
|
|
|
|
|
|
|
|
|
// modyfying data
|
|
|
|
|
for (int i = mirrorIndex; i < clonePosition.limit(); i += 3) { |
|
|
|
@ -575,6 +577,14 @@ public class ModifierHelper extends AbstractBlenderHelper { |
|
|
|
|
} |
|
|
|
|
cloneNormals.put(i, -cloneNormals.get(i)); |
|
|
|
|
cloneBindPoseNormals.put(i, -cloneNormals.get(i)); |
|
|
|
|
|
|
|
|
|
//modifying clone indexes
|
|
|
|
|
int vertexIndex = (i - mirrorIndex) / 3; |
|
|
|
|
if(vertexIndex % 3 == 0) { |
|
|
|
|
short index = cloneIndexes.get(vertexIndex + 2); |
|
|
|
|
cloneIndexes.put(vertexIndex + 2, cloneIndexes.get(vertexIndex + 1)); |
|
|
|
|
cloneIndexes.put(vertexIndex + 1, index); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
if(mirrorU) { |
|
|
|
|