[x3d-public] Need Material/Clothes
John Carlson
yottzumm at gmail.com
Mon Sep 6 04:48:18 PDT 2021
Programs like these are why JavaScript is the best programming language
on the planet...
I'm going to look at Andreas' X3DUOM effort again.
John
On 9/6/21 6:05 AM, John Carlson wrote:
> "use strict";
>
> const fs = require('fs');
>
> const files = [ "JinLOA4.json" ];
>
> let globalScale = [ 1, 1, 1 ];
> let height = 1;
>
> function browse(obj) {
> if (typeof obj === 'object') {
> for (let o in obj) {
> if (o === '@point') {
> // console.log('point before', obj[o]);
> for (let i in obj[o]) {
> obj[o][i] *= globalScale[i % 3];
> }
> console.log('point after', obj[o]);
> } else if (o === '@translation') {
> // console.log('translation before',
> obj[o]);
> for (let i in obj[o]) {
> obj[o][i] *= globalScale[i];
> }
> console.log('translation after', obj[o]);
> } else if (o === '@center') {
> // console.log('center before', obj[o]);
> for (let i in obj[o]) {
> obj[o][i] *= globalScale[i];
> }
> console.log('center after', obj[o]);
> } else if (o === '@name' && obj[o] ===
> 'height') {
> console.log('height before',
> obj['@value']);
> console.log('global scale before:',
> globalScale);
> globalScale[1] /=
> obj['@value'][0];
> console.log('global scale after:',
> globalScale);
> obj['@value'][0] /=
> obj['@value'][0];
> console.log('height after',
> obj['@value'][0]); // this should be 1
> } else if (o === '@scale') {
> // change scale to no scaling
> console.log('scale before', obj[o]);
> console.log('global scale before',
> globalScale);
> for (let i in obj[o]) {
> globalScale[i] = obj[o][i];
> obj[o][i] /= globalScale[i];
> }
> console.log('scale after', obj[o]);
> console.log('global scale after',
> globalScale);
> } else if (typeof obj[o] === 'object') {
> obj[o] = browse(obj[o]);
> }
> }
> }
> return obj;
> }
>
> for (let f in files) {
> let str = fs.readFileSync(files[f]);
> let obj = JSON.parse(str);
> str = JSON.stringify(obj, null, 2);
> // console.log(str);
> obj = browse(obj);
> str = JSON.stringify(obj, null, 2);
> // console.log(str);
> fs.writeFileSync(files[f].replace(/json/, "txt"), str);
> }
>
More information about the x3d-public
mailing list