Skip to content

Instantly share code, notes, and snippets.

@Saqoosha
Last active November 16, 2015 02:18
Show Gist options
  • Save Saqoosha/1c5cc6b6b27a503cacac to your computer and use it in GitHub Desktop.
Save Saqoosha/1c5cc6b6b27a503cacac to your computer and use it in GitHub Desktop.
var fs = require('fs')
var data = JSON.parse(fs.readFileSync('keyframes.json'))
for (var key in data.user.property) {
console.log(key)
}
// console.log(data.user.property.position)
var position = data.user.property.position
var vertices = []
data.user.property.face_vertices.forEach((v) => {
vertices.push.apply(vertices, v)
})
console.log('length', vertices.length)
var min = Number.MAX_VALUE
var max = Number.MIN_VALUE
for (var i = 0; i < vertices.length; i++) {
var v = vertices[i]
if (v < min) min = v
if (v > max) max = v
}
console.log('min', min, 'max', max)
function mapToShort(v, imin, imax) {
return Math.round((v - imin) / (imax - imin) * 0xffff)
}
console.log(mapToShort(min, min, max))
console.log(mapToShort(max, min, max))
function mapToFloat(v, imin, imax) {
return (imax - imin) * (v / 0xffff) + imin
}
console.log(mapToFloat(mapToShort(min, min, max), min, max))
console.log(mapToFloat(mapToShort(max, min, max), min, max))
var sum = 0
var buffer = new Buffer(vertices.length * 2)
for (var i = 0; i < vertices.length; i++) {
var v = mapToShort(vertices[i], min, max)
buffer.writeUInt16LE(mapToShort(vertices[i], min, max), i * 2)
var d = vertices[i] - mapToFloat(v, min, max)
sum += Math.abs(d)
}
sum /= vertices.length
console.log('MAE', sum)
// var buffer = new Buffer(vertices.length * 4)
// for (var i = 0; i < vertices.length; i++) {
// buffer.writeFloatLE(vertices[i], i * 4)
// }
// fs.writeFileSync('position.json', JSON.stringify(vertices))
fs.writeFileSync('position16.bin', buffer)
position
quaternion
scale
face_vertices
eyemouth_vertices
length 3223692
min -1.729493 max 663.247126
0
65535
-1.729493
663.247126
MAE 0.002579241523183628
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment