jme3tools.converters: remove deprecated classes
This commit is contained in:
parent
ca497f458a
commit
f2cd1334ec
@ -1,39 +0,0 @@
|
||||
/*
|
||||
* Copyright (c) 2009-2012 jMonkeyEngine
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions are
|
||||
* met:
|
||||
*
|
||||
* * Redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
*
|
||||
* * Redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in the
|
||||
* documentation and/or other materials provided with the distribution.
|
||||
*
|
||||
* * Neither the name of 'jMonkeyEngine' nor the names of its contributors
|
||||
* may be used to endorse or promote products derived from this software
|
||||
* without specific prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
|
||||
* TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
||||
* PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
|
||||
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
|
||||
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
|
||||
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
|
||||
* PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
|
||||
* LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
|
||||
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*/
|
||||
|
||||
package jme3tools.converters;
|
||||
|
||||
import java.util.Map;
|
||||
|
||||
public interface Converter<T> {
|
||||
public T convert(T input, Map<String, String> params);
|
||||
}
|
@ -1,80 +0,0 @@
|
||||
/*
|
||||
* Copyright (c) 2009-2012 jMonkeyEngine
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions are
|
||||
* met:
|
||||
*
|
||||
* * Redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
*
|
||||
* * Redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in the
|
||||
* documentation and/or other materials provided with the distribution.
|
||||
*
|
||||
* * Neither the name of 'jMonkeyEngine' nor the names of its contributors
|
||||
* may be used to endorse or promote products derived from this software
|
||||
* without specific prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
|
||||
* TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
||||
* PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
|
||||
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
|
||||
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
|
||||
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
|
||||
* PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
|
||||
* LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
|
||||
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*/
|
||||
|
||||
package jme3tools.converters;
|
||||
|
||||
import com.jme3.asset.AssetManager;
|
||||
import com.jme3.system.JmeSystem;
|
||||
import java.io.File;
|
||||
import java.io.FileOutputStream;
|
||||
import java.io.IOException;
|
||||
import java.util.jar.JarEntry;
|
||||
import java.util.jar.JarOutputStream;
|
||||
|
||||
public class FolderConverter {
|
||||
|
||||
private static AssetManager assetManager;
|
||||
private static File sourceRoot;
|
||||
private static JarOutputStream jarOut;
|
||||
private static long time;
|
||||
|
||||
private static void process(File file) throws IOException{
|
||||
String name = file.getName().replaceAll("[\\/\\.]", "_");
|
||||
JarEntry entry = new JarEntry(name);
|
||||
entry.setTime(time);
|
||||
|
||||
jarOut.putNextEntry(entry);
|
||||
}
|
||||
|
||||
public static void main(String[] args) throws IOException{
|
||||
if (args.length == 0){
|
||||
System.out.println("Usage: java -jar FolderConverter <input folder>");
|
||||
System.out.println();
|
||||
System.out.println(" Converts files from input to output");
|
||||
System.exit(1);
|
||||
}
|
||||
|
||||
sourceRoot = new File(args[0]);
|
||||
|
||||
File jarFile = new File(sourceRoot.getParent(), sourceRoot.getName()+".jar");
|
||||
FileOutputStream out = new FileOutputStream(jarFile);
|
||||
jarOut = new JarOutputStream(out);
|
||||
|
||||
assetManager = JmeSystem.newAssetManager();
|
||||
assetManager.registerLocator(sourceRoot.toString(),
|
||||
"com.jme3.asset.plugins.FileSystemLocator");
|
||||
for (File f : sourceRoot.listFiles()){
|
||||
process(f);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
@ -1,351 +0,0 @@
|
||||
/*
|
||||
* Copyright (c) 2009-2012 jMonkeyEngine
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions are
|
||||
* met:
|
||||
*
|
||||
* * Redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
*
|
||||
* * Redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in the
|
||||
* documentation and/or other materials provided with the distribution.
|
||||
*
|
||||
* * Neither the name of 'jMonkeyEngine' nor the names of its contributors
|
||||
* may be used to endorse or promote products derived from this software
|
||||
* without specific prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
|
||||
* TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
||||
* PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
|
||||
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
|
||||
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
|
||||
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
|
||||
* PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
|
||||
* LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
|
||||
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*/
|
||||
|
||||
package jme3tools.converters.model;
|
||||
|
||||
import com.jme3.bounding.BoundingBox;
|
||||
import com.jme3.math.Transform;
|
||||
import com.jme3.math.Vector2f;
|
||||
import com.jme3.math.Vector3f;
|
||||
import com.jme3.scene.Geometry;
|
||||
import com.jme3.scene.Mesh;
|
||||
import com.jme3.scene.VertexBuffer;
|
||||
import com.jme3.scene.VertexBuffer.Format;
|
||||
import com.jme3.scene.VertexBuffer.Type;
|
||||
import com.jme3.scene.VertexBuffer.Usage;
|
||||
import com.jme3.scene.mesh.IndexBuffer;
|
||||
import com.jme3.util.BufferUtils;
|
||||
import java.nio.*;
|
||||
|
||||
@Deprecated
|
||||
public class FloatToFixed {
|
||||
|
||||
private static final float shortSize = Short.MAX_VALUE - Short.MIN_VALUE;
|
||||
private static final float shortOff = (Short.MAX_VALUE + Short.MIN_VALUE) * 0.5f;
|
||||
|
||||
private static final float byteSize = Byte.MAX_VALUE - Byte.MIN_VALUE;
|
||||
private static final float byteOff = (Byte.MAX_VALUE + Byte.MIN_VALUE) * 0.5f;
|
||||
|
||||
@Deprecated
|
||||
public static void convertToFixed(Geometry geom, Format posFmt, Format nmFmt, Format tcFmt){
|
||||
geom.updateModelBound();
|
||||
BoundingBox bbox = (BoundingBox) geom.getModelBound();
|
||||
Mesh mesh = geom.getMesh();
|
||||
|
||||
VertexBuffer positions = mesh.getBuffer(Type.Position);
|
||||
VertexBuffer normals = mesh.getBuffer(Type.Normal);
|
||||
VertexBuffer texcoords = mesh.getBuffer(Type.TexCoord);
|
||||
VertexBuffer indices = mesh.getBuffer(Type.Index);
|
||||
|
||||
// positions
|
||||
FloatBuffer fb = (FloatBuffer) positions.getData();
|
||||
if (posFmt != Format.Float){
|
||||
Buffer newBuf = VertexBuffer.createBuffer(posFmt, positions.getNumComponents(),
|
||||
mesh.getVertexCount());
|
||||
Transform t = convertPositions(fb, bbox, newBuf);
|
||||
t.combineWithParent(geom.getLocalTransform());
|
||||
geom.setLocalTransform(t);
|
||||
|
||||
VertexBuffer newPosVb = new VertexBuffer(Type.Position);
|
||||
newPosVb.setupData(positions.getUsage(),
|
||||
positions.getNumComponents(),
|
||||
posFmt,
|
||||
newBuf);
|
||||
mesh.clearBuffer(Type.Position);
|
||||
mesh.setBuffer(newPosVb);
|
||||
}
|
||||
|
||||
// normals, automatically convert to signed byte
|
||||
fb = (FloatBuffer) normals.getData();
|
||||
|
||||
ByteBuffer bb = BufferUtils.createByteBuffer(fb.capacity());
|
||||
convertNormals(fb, bb);
|
||||
|
||||
normals = new VertexBuffer(Type.Normal);
|
||||
normals.setupData(Usage.Static, 3, Format.Byte, bb);
|
||||
normals.setNormalized(true);
|
||||
mesh.clearBuffer(Type.Normal);
|
||||
mesh.setBuffer(normals);
|
||||
|
||||
// texcoords
|
||||
fb = (FloatBuffer) texcoords.getData();
|
||||
if (tcFmt != Format.Float){
|
||||
Buffer newBuf = VertexBuffer.createBuffer(tcFmt,
|
||||
texcoords.getNumComponents(),
|
||||
mesh.getVertexCount());
|
||||
convertTexCoords2D(fb, newBuf);
|
||||
|
||||
VertexBuffer newTcVb = new VertexBuffer(Type.TexCoord);
|
||||
newTcVb.setupData(texcoords.getUsage(),
|
||||
texcoords.getNumComponents(),
|
||||
tcFmt,
|
||||
newBuf);
|
||||
mesh.clearBuffer(Type.TexCoord);
|
||||
mesh.setBuffer(newTcVb);
|
||||
}
|
||||
}
|
||||
|
||||
public static void compressIndexBuffer(Mesh mesh){
|
||||
int vertCount = mesh.getVertexCount();
|
||||
VertexBuffer vb = mesh.getBuffer(Type.Index);
|
||||
Format targetFmt;
|
||||
if (vb.getFormat() == Format.UnsignedInt && vertCount <= 0xffff){
|
||||
if (vertCount <= 256)
|
||||
targetFmt = Format.UnsignedByte;
|
||||
else
|
||||
targetFmt = Format.UnsignedShort;
|
||||
}else if (vb.getFormat() == Format.UnsignedShort && vertCount <= 0xff){
|
||||
targetFmt = Format.UnsignedByte;
|
||||
}else{
|
||||
return;
|
||||
}
|
||||
|
||||
IndexBuffer src = mesh.getIndexBuffer();
|
||||
Buffer newBuf = VertexBuffer.createBuffer(targetFmt, vb.getNumComponents(), src.size());
|
||||
|
||||
VertexBuffer newVb = new VertexBuffer(Type.Index);
|
||||
newVb.setupData(vb.getUsage(), vb.getNumComponents(), targetFmt, newBuf);
|
||||
mesh.clearBuffer(Type.Index);
|
||||
mesh.setBuffer(newVb);
|
||||
|
||||
IndexBuffer dst = mesh.getIndexBuffer();
|
||||
for (int i = 0; i < src.size(); i++){
|
||||
dst.put(i, src.get(i));
|
||||
}
|
||||
}
|
||||
|
||||
private static void convertToFixed(FloatBuffer input, IntBuffer output){
|
||||
if (output.capacity() < input.capacity())
|
||||
throw new RuntimeException("Output must be at least as large as input!");
|
||||
|
||||
input.clear();
|
||||
output.clear();
|
||||
for (int i = 0; i < input.capacity(); i++){
|
||||
output.put( (int) (input.get() * (float)(1<<16)) );
|
||||
}
|
||||
output.flip();
|
||||
}
|
||||
|
||||
private static void convertToFloat(IntBuffer input, FloatBuffer output){
|
||||
if (output.capacity() < input.capacity())
|
||||
throw new RuntimeException("Output must be at least as large as input!");
|
||||
|
||||
input.clear();
|
||||
output.clear();
|
||||
for (int i = 0; i < input.capacity(); i++){
|
||||
output.put( ((float)input.get() / (float)(1<<16)) );
|
||||
}
|
||||
output.flip();
|
||||
}
|
||||
|
||||
private static void convertToUByte(FloatBuffer input, ByteBuffer output){
|
||||
if (output.capacity() < input.capacity())
|
||||
throw new RuntimeException("Output must be at least as large as input!");
|
||||
|
||||
input.clear();
|
||||
output.clear();
|
||||
for (int i = 0; i < input.capacity(); i++){
|
||||
output.put( (byte) (input.get() * 255f) );
|
||||
}
|
||||
output.flip();
|
||||
}
|
||||
|
||||
|
||||
public static VertexBuffer convertToUByte(VertexBuffer vb){
|
||||
FloatBuffer fb = (FloatBuffer) vb.getData();
|
||||
ByteBuffer bb = BufferUtils.createByteBuffer(fb.capacity());
|
||||
convertToUByte(fb, bb);
|
||||
|
||||
VertexBuffer newVb = new VertexBuffer(vb.getBufferType());
|
||||
newVb.setupData(vb.getUsage(),
|
||||
vb.getNumComponents(),
|
||||
Format.UnsignedByte,
|
||||
bb);
|
||||
newVb.setNormalized(true);
|
||||
return newVb;
|
||||
}
|
||||
|
||||
public static VertexBuffer convertToFixed(VertexBuffer vb){
|
||||
if (vb.getFormat() == Format.Int)
|
||||
return vb;
|
||||
|
||||
FloatBuffer fb = (FloatBuffer) vb.getData();
|
||||
IntBuffer ib = BufferUtils.createIntBuffer(fb.capacity());
|
||||
convertToFixed(fb, ib);
|
||||
|
||||
VertexBuffer newVb = new VertexBuffer(vb.getBufferType());
|
||||
newVb.setupData(vb.getUsage(),
|
||||
vb.getNumComponents(),
|
||||
Format.Int,
|
||||
ib);
|
||||
return newVb;
|
||||
}
|
||||
|
||||
public static VertexBuffer convertToFloat(VertexBuffer vb){
|
||||
if (vb.getFormat() == Format.Float)
|
||||
return vb;
|
||||
|
||||
IntBuffer ib = (IntBuffer) vb.getData();
|
||||
FloatBuffer fb = BufferUtils.createFloatBuffer(ib.capacity());
|
||||
convertToFloat(ib, fb);
|
||||
|
||||
VertexBuffer newVb = new VertexBuffer(vb.getBufferType());
|
||||
newVb.setupData(vb.getUsage(),
|
||||
vb.getNumComponents(),
|
||||
Format.Float,
|
||||
fb);
|
||||
return newVb;
|
||||
}
|
||||
|
||||
private static void convertNormals(FloatBuffer input, ByteBuffer output){
|
||||
if (output.capacity() < input.capacity())
|
||||
throw new RuntimeException("Output must be at least as large as input!");
|
||||
|
||||
input.clear();
|
||||
output.clear();
|
||||
Vector3f temp = new Vector3f();
|
||||
int vertexCount = input.capacity() / 3;
|
||||
for (int i = 0; i < vertexCount; i++){
|
||||
BufferUtils.populateFromBuffer(temp, input, i);
|
||||
|
||||
// offset and scale vector into -128 ... 127
|
||||
temp.multLocal(127).addLocal(0.5f, 0.5f, 0.5f);
|
||||
|
||||
// quantize
|
||||
byte v1 = (byte) temp.getX();
|
||||
byte v2 = (byte) temp.getY();
|
||||
byte v3 = (byte) temp.getZ();
|
||||
|
||||
// store
|
||||
output.put(v1).put(v2).put(v3);
|
||||
}
|
||||
}
|
||||
|
||||
private static void convertTexCoords2D(FloatBuffer input, Buffer output){
|
||||
if (output.capacity() < input.capacity())
|
||||
throw new RuntimeException("Output must be at least as large as input!");
|
||||
|
||||
input.clear();
|
||||
output.clear();
|
||||
Vector2f temp = new Vector2f();
|
||||
int vertexCount = input.capacity() / 2;
|
||||
|
||||
ShortBuffer sb = null;
|
||||
IntBuffer ib = null;
|
||||
|
||||
if (output instanceof ShortBuffer)
|
||||
sb = (ShortBuffer) output;
|
||||
else if (output instanceof IntBuffer)
|
||||
ib = (IntBuffer) output;
|
||||
else
|
||||
throw new UnsupportedOperationException();
|
||||
|
||||
for (int i = 0; i < vertexCount; i++){
|
||||
BufferUtils.populateFromBuffer(temp, input, i);
|
||||
|
||||
if (sb != null){
|
||||
sb.put( (short) (temp.getX()*Short.MAX_VALUE) );
|
||||
sb.put( (short) (temp.getY()*Short.MAX_VALUE) );
|
||||
}else{
|
||||
int v1 = (int) (temp.getX() * ((float)(1 << 16)));
|
||||
int v2 = (int) (temp.getY() * ((float)(1 << 16)));
|
||||
ib.put(v1).put(v2);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private static Transform convertPositions(FloatBuffer input, BoundingBox bbox, Buffer output){
|
||||
if (output.capacity() < input.capacity())
|
||||
throw new RuntimeException("Output must be at least as large as input!");
|
||||
|
||||
Vector3f offset = bbox.getCenter().negate();
|
||||
Vector3f size = new Vector3f(bbox.getXExtent(), bbox.getYExtent(), bbox.getZExtent());
|
||||
size.multLocal(2);
|
||||
|
||||
ShortBuffer sb = null;
|
||||
ByteBuffer bb = null;
|
||||
float dataTypeSize;
|
||||
float dataTypeOffset;
|
||||
if (output instanceof ShortBuffer){
|
||||
sb = (ShortBuffer) output;
|
||||
dataTypeOffset = shortOff;
|
||||
dataTypeSize = shortSize;
|
||||
}else{
|
||||
bb = (ByteBuffer) output;
|
||||
dataTypeOffset = byteOff;
|
||||
dataTypeSize = byteSize;
|
||||
}
|
||||
Vector3f scale = new Vector3f();
|
||||
scale.set(dataTypeSize, dataTypeSize, dataTypeSize).divideLocal(size);
|
||||
|
||||
Vector3f invScale = new Vector3f();
|
||||
invScale.set(size).divideLocal(dataTypeSize);
|
||||
|
||||
offset.multLocal(scale);
|
||||
offset.addLocal(dataTypeOffset, dataTypeOffset, dataTypeOffset);
|
||||
|
||||
// offset = (-modelOffset * shortSize)/modelSize + shortOff
|
||||
// scale = shortSize / modelSize
|
||||
|
||||
input.clear();
|
||||
output.clear();
|
||||
Vector3f temp = new Vector3f();
|
||||
int vertexCount = input.capacity() / 3;
|
||||
for (int i = 0; i < vertexCount; i++){
|
||||
BufferUtils.populateFromBuffer(temp, input, i);
|
||||
|
||||
// offset and scale vector into -32768 ... 32767
|
||||
// or into -128 ... 127 if using bytes
|
||||
temp.multLocal(scale);
|
||||
temp.addLocal(offset);
|
||||
|
||||
// quantize and store
|
||||
if (sb != null){
|
||||
short v1 = (short) temp.getX();
|
||||
short v2 = (short) temp.getY();
|
||||
short v3 = (short) temp.getZ();
|
||||
sb.put(v1).put(v2).put(v3);
|
||||
}else{
|
||||
byte v1 = (byte) temp.getX();
|
||||
byte v2 = (byte) temp.getY();
|
||||
byte v3 = (byte) temp.getZ();
|
||||
bb.put(v1).put(v2).put(v3);
|
||||
}
|
||||
}
|
||||
|
||||
Transform transform = new Transform();
|
||||
transform.setTranslation(offset.negate().multLocal(invScale));
|
||||
transform.setScale(invScale);
|
||||
return transform;
|
||||
}
|
||||
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user