forked from kaverti/website
Improved rendering
This commit is contained in:
parent
25ef555a81
commit
bc62d8fbc4
|
@ -0,0 +1,27 @@
|
|||
module.exports = {
|
||||
up(queryInterface, Sequelize) {
|
||||
return Promise.all([
|
||||
queryInterface.addColumn(
|
||||
'Users',
|
||||
'hatId',
|
||||
{
|
||||
type: Sequelize.BIGINT
|
||||
},
|
||||
),
|
||||
queryInterface.addColumn(
|
||||
'Users',
|
||||
'pantsId',
|
||||
{
|
||||
type: Sequelize.BIGINT
|
||||
},
|
||||
),
|
||||
queryInterface.addColumn(
|
||||
'Users',
|
||||
'shirtId',
|
||||
{
|
||||
type: Sequelize.BIGINT
|
||||
},
|
||||
),
|
||||
]);
|
||||
},
|
||||
}
|
|
@ -237,6 +237,18 @@ module.exports = (sequelize, DataTypes) => {
|
|||
type: DataTypes.BIGINT,
|
||||
defaultValue: 0
|
||||
},
|
||||
hatId: {
|
||||
type: DataTypes.BIGINT,
|
||||
defaultValue: 0
|
||||
},
|
||||
shirtId: {
|
||||
type: DataTypes.BIGINT,
|
||||
defaultValue: 0
|
||||
},
|
||||
pantsId: {
|
||||
type: DataTypes.BIGINT,
|
||||
defaultValue: 0
|
||||
},
|
||||
picture: {
|
||||
type: DataTypes.TEXT('long'),
|
||||
validate: {
|
||||
|
|
Binary file not shown.
After Width: | Height: | Size: 28 KiB |
Binary file not shown.
After Width: | Height: | Size: 12 KiB |
Binary file not shown.
After Width: | Height: | Size: 44 KiB |
Binary file not shown.
After Width: | Height: | Size: 18 KiB |
Binary file not shown.
After Width: | Height: | Size: 18 KiB |
|
@ -0,0 +1,46 @@
|
|||
import bpy
|
||||
def hex_to_rgb(value):
|
||||
gamma = 2.05
|
||||
value = value.lstrip('#')
|
||||
lv = len(value)
|
||||
fin = list(int(value[i:i + lv // 3], 16) for i in range(0, lv, lv // 3))
|
||||
r = pow(fin[0] / 255, gamma)
|
||||
g = pow(fin[1] / 255, gamma)
|
||||
b = pow(fin[2] / 255, gamma)
|
||||
fin.clear()
|
||||
fin.append(r)
|
||||
fin.append(g)
|
||||
fin.append(b)
|
||||
return tuple(fin)
|
||||
bpy.ops.wm.open_mainfile(filepath='C:/Users/matth/Documents/GitHub/website/rendering/avatar.blend')
|
||||
bpy.data.objects['Head'].select = True
|
||||
bpy.data.materials['Head'].diffuse_color = hex_to_rgb('#ffffff')
|
||||
bpy.data.materials['Face'].diffuse_color = hex_to_rgb('#ffffff')
|
||||
bpy.data.objects['Left Arm'].select = True
|
||||
bpy.data.objects['Left Arm'].active_material.diffuse_color = hex_to_rgb('#ffffff')
|
||||
bpy.data.objects['Torso'].select = True
|
||||
bpy.data.objects['Torso'].active_material.diffuse_color = hex_to_rgb('#ffffff')
|
||||
bpy.data.objects['Right Arm'].select = True
|
||||
bpy.data.objects['Right Arm'].active_material.diffuse_color = hex_to_rgb('#ffffff')
|
||||
bpy.data.objects['Left Leg'].select = True
|
||||
bpy.data.objects['Left Leg'].active_material.diffuse_color = hex_to_rgb('#ffffff')
|
||||
bpy.data.objects['Right Leg'].select = True
|
||||
bpy.data.objects['Right Leg'].active_material.diffuse_color = hex_to_rgb('#ffffff')
|
||||
|
||||
face_Image = bpy.data.images.load(filepath = 'C:/Users/matth/Documents/GitHub/website/rendering/faces/defaultFace.png')
|
||||
bpy.data.textures['Face'].image = face_Image
|
||||
shirt_Image = bpy.data.images.load(filepath = 'C:/Users/matth/Documents/GitHub/website/rendering/shirts/5.png')
|
||||
bpy.data.textures['Shirt'].image = shirt_Image
|
||||
bpy.data.textures['ShirtR'].image = shirt_Image
|
||||
bpy.data.textures['ShirtL'].image = shirt_Image
|
||||
pants_Image = bpy.data.images.load(filepath = 'C:/Users/matth/Documents/GitHub/website/rendering/pants/0.png')
|
||||
bpy.data.textures['PantsR'].image = pants_Image
|
||||
bpy.data.textures['PantsL'].image = pants_Image
|
||||
for obj in bpy.data.objects:
|
||||
obj.select = False
|
||||
bpy.ops.object.select_all(action='SELECT')
|
||||
bpy.ops.view3d.camera_to_view_selected()
|
||||
scene = bpy.context.scene
|
||||
scene.render.image_settings.file_format = 'PNG'
|
||||
scene.render.filepath = 'rendering/1-627gnoll4ym.png'
|
||||
bpy.ops.render.render(write_still = 1)
|
197
routes/avatar.js
197
routes/avatar.js
|
@ -1,125 +1,80 @@
|
|||
let express = require('express')
|
||||
let router = express.Router()
|
||||
const auth = require('../lib/auth')
|
||||
let express = require('express')
|
||||
let router = express.Router()
|
||||
const auth = require('../lib/auth')
|
||||
|
||||
var fs = require("fs"); let express = require('express')
|
||||
let router = express.Router()
|
||||
const auth = require('../lib/auth')
|
||||
var fs = require("fs");
|
||||
const rateLimit = require("express-rate-limit");
|
||||
const { exec } = require('child_process');
|
||||
const limiter = rateLimit({
|
||||
windowMs: 60 * 1000,
|
||||
max: 3,
|
||||
message: "You are being rate limited"
|
||||
});
|
||||
let { User, Sequelize } = require('../models')
|
||||
const Errors = require('../lib/errors')
|
||||
var randomString = (Math.random().toString(36).substring(2))
|
||||
router.post("/refresh", limiter, auth, async(req, res, next) => {
|
||||
let user = await User.findOne({ where: {
|
||||
id: req.userData.UserId
|
||||
}})
|
||||
if(!user) {
|
||||
throw Errors.unknown
|
||||
}
|
||||
console.log(user)
|
||||
let rootPathRender = "C:/Users/matth/Documents/GitHub/website/";
|
||||
var blendFilePath = rootPathRender + "rendering/avatar.blend";
|
||||
var imageSavePath = "rendering/"+req.userData.UserId+"-"+randomString+".png";
|
||||
var pythonFilePath = "rendering/usercontent/"+req.userData.UserId+".py";
|
||||
var faceFilePath = rootPathRender + "rendering/faces/defaultFace.png";
|
||||
if(user.shirtId) {
|
||||
var shirtFilePath = rootPathRender + "rendering/shirts/" + user.shirtId + ".png"; // should be set to 0 by default, 0.png will just be a transparent image
|
||||
} else {
|
||||
var shirtFilePath = rootPathRender + "rendering/shirts/0.png"; // should be set to 0 by default, 0.png will just be a transparent image
|
||||
}
|
||||
if(user.pantsId) {
|
||||
var pantsFilePath = rootPathRender + "rendering/pants/" + user.pantsId + ".png"; // should be set to 0 by default, 0.png will just be a transparent image
|
||||
} else {
|
||||
var pantsFilePath = rootPathRender + "rendering/pants/0.png"; // should be set to 0 by default, 0.png will just be a transparent image
|
||||
}
|
||||
if(user.hatId) {
|
||||
var hatFilePath = rootPathRender + "rendering/hats/" + user.hatId + ".obj"
|
||||
var hat = "hat_import = bpy.ops.import_scene.obj(filepath='"+hatFilePath+"')\nhat = bpy.context.selected_objects[0]\nbpy.context.selected_objects[0].data.name = 'hat'\nbpy.context.selected_objects[0].name = 'hat'\nhat_material = bpy.data.materials.new('hat')\nhat_material.diffuse_shader = 'LAMBERT'\nhat.active_material = hat_material\nhat_image = bpy.data.images.load(filepath = '" + rootPathRender + "rendering/hats/"+user.hatID+".png')\nhat_texture = bpy.data.textures.new('ColorTex', type = 'IMAGE')\nhat_texture.image = hat_image\nhat_add = bpy.data.objects['hat'].active_material.texture_slots.add()\nhat_add.texture = hat_texture";
|
||||
} else {
|
||||
var hat = ''
|
||||
}
|
||||
|
||||
var fs = require("fs");
|
||||
const rateLimit = require("express-rate-limit");
|
||||
const { exec } = require('child_process');
|
||||
const limiter = rateLimit({
|
||||
windowMs: 60 * 1000,
|
||||
max: 3,
|
||||
message: "You are being rate limited"
|
||||
var imports = "import bpy";
|
||||
var functions = "def hex_to_rgb(value):\n gamma = 2.05\n value = value.lstrip('#')\n lv = len(value)\n fin = list(int(value[i:i + lv // 3], 16) for i in range(0, lv, lv // 3))\n r = pow(fin[0] / 255, gamma)\n g = pow(fin[1] / 255, gamma)\n b = pow(fin[2] / 255, gamma)\n fin.clear()\n fin.append(r)\n fin.append(g)\n fin.append(b)\n return tuple(fin)";
|
||||
var blenderImport = "bpy.ops.wm.open_mainfile(filepath='"+blendFilePath+"')";
|
||||
var headColor = "bpy.data.objects['Head'].select = True\nbpy.data.materials['Head'].diffuse_color = hex_to_rgb('"+user.headColor+"')\nbpy.data.materials['Face'].diffuse_color = hex_to_rgb('"+user.headColor+"')";
|
||||
var leftArmColor = "bpy.data.objects['Left Arm'].select = True\nbpy.data.objects['Left Arm'].active_material.diffuse_color = hex_to_rgb('"+user.leftArmColor+"')";
|
||||
var rightArmColor = "bpy.data.objects['Right Arm'].select = True\nbpy.data.objects['Right Arm'].active_material.diffuse_color = hex_to_rgb('"+user.rightArmColor+"')";
|
||||
var bodyColor = "bpy.data.objects['Torso'].select = True\nbpy.data.objects['Torso'].active_material.diffuse_color = hex_to_rgb('"+user.bodyColor+"')";
|
||||
var leftLegColor = "bpy.data.objects['Left Leg'].select = True\nbpy.data.objects['Left Leg'].active_material.diffuse_color = hex_to_rgb('"+user.leftLegColor+"')";
|
||||
var rightLegColor = "bpy.data.objects['Right Leg'].select = True\nbpy.data.objects['Right Leg'].active_material.diffuse_color = hex_to_rgb('"+user.rightLegColor+"')";
|
||||
var colors = headColor+"\n"+leftArmColor+"\n"+bodyColor+"\n"+rightArmColor+"\n"+leftLegColor+"\n"+rightLegColor;
|
||||
|
||||
if(user.hatId) {
|
||||
var hat = "hat_import = bpy.ops.import_scene.obj(filepath='"+hatFilePath+"')\nhat = bpy.context.selected_objects[0]\nbpy.context.selected_objects[0].data.name = 'hat'\nbpy.context.selected_objects[0].name = 'hat'\nhat_material = bpy.data.materials.new('hat')\nhat_material.diffuse_shader = 'LAMBERT'\nhat.active_material = hat_material\nhat_image = bpy.data.images.load(filepath = '" + rootPathRender + "rendering/hats/"+user.hatID+".png')\nhat_texture = bpy.data.textures.new('ColorTex', type = 'IMAGE')\nhat_texture.image = hat_image\nhat_add = bpy.data.objects['hat'].active_material.texture_slots.add()\nhat_add.texture = hat_texture";
|
||||
} else {
|
||||
var hat = ''
|
||||
}
|
||||
var face = "face_Image = bpy.data.images.load(filepath = '"+faceFilePath+"')\nbpy.data.textures['Face'].image = face_Image";
|
||||
var shirt = "shirt_Image = bpy.data.images.load(filepath = '"+shirtFilePath+"')\nbpy.data.textures['Shirt'].image = shirt_Image\nbpy.data.textures['ShirtR'].image = shirt_Image\nbpy.data.textures['ShirtL'].image = shirt_Image";
|
||||
var pants = "pants_Image = bpy.data.images.load(filepath = '"+pantsFilePath+"')\nbpy.data.textures['PantsR'].image = pants_Image\nbpy.data.textures['PantsL'].image = pants_Image";
|
||||
var render = "for obj in bpy.data.objects:\n obj.select = False\n bpy.ops.object.select_all(action='SELECT')\nbpy.ops.view3d.camera_to_view_selected()\nscene = bpy.context.scene\nscene.render.image_settings.file_format = 'PNG'\nscene.render.filepath = '"+imageSavePath+"'\nbpy.ops.render.render(write_still = 1)";
|
||||
var python = imports+"\n"+functions+"\n"+blenderImport+"\n"+colors+"\n"+hat+"\n"+face+"\n"+shirt+"\n"+pants+"\n"+render;
|
||||
fs.writeFile("rendering/usercontent/"+req.userData.UserId+".py", python, function(err,data){
|
||||
if(err) { console.log(err) }
|
||||
})
|
||||
|
||||
exec("blender -b -P rendering/usercontent/"+req.userData.UserId+".py", (err, stdout, stderr) => {
|
||||
if(err) { console.log(err) }
|
||||
console.log("stdout: " + stdout);
|
||||
console.log("stderr: " + stderr);
|
||||
res.status(200)
|
||||
res.json({success: true})
|
||||
});
|
||||
let { User, Sequelize } = require('../models')
|
||||
const Errors = require('../lib/errors')
|
||||
var randomString = (Math.random().toString(36).substring(2))
|
||||
router.use(limiter);
|
||||
router.post("/refresh", limiter, auth, async(req, res, next) => {
|
||||
User.findByPk(req.userData.UserId).then(function(selected){
|
||||
var blendFilePath = "../rendering/avatar.blend";
|
||||
var imageSavePath = "/usr/share/nginx/html/cdn/user/avatars/full/"+req.userData.UserID+"-"+randomString+".png";
|
||||
var pythonFilePath = "../rendering/usercontent/"+req.userData.UserID+".py";
|
||||
var faceFilePath = "../rendering/faces/defaultFace.png";
|
||||
var shirtFilePath = "../rendering/shirts/" + User.shirtID + ".png"; // should be set to 0 by default, 0.png will just be a transparent image
|
||||
var pantsFilePath = "../rendering/pants/" + User.pantsID + ".png"; // should be set to 0 by default, 0.png will just be a transparent image
|
||||
if(User.hatID != 0) {
|
||||
var hatFilePath = "../rendering/hats/" + User.hatID + ".obj";
|
||||
}
|
||||
|
||||
var imports = "import bpy";
|
||||
var functions = "def hex_to_rgb(value):\n gamma = 2.05\n value = value.lstrip('#')\n lv = len(value)\n fin = list(int(value[i:i + lv // 3], 16) for i in range(0, lv, lv // 3))\n r = pow(fin[0] / 255, gamma)\n g = pow(fin[1] / 255, gamma)\n b = pow(fin[2] / 255, gamma)\n fin.clear()\n fin.append(r)\n fin.append(g)\n fin.append(b)\n return tuple(fin)";
|
||||
var blenderImport = "bpy.ops.wm.open_mainfile(filepath='"+blendFilePath+"')";
|
||||
var headColor = "bpy.data.objects['Head'].select = True\nbpy.data.materials['Head'].diffuse_color = hex_to_rgb('#"+User.headColor+"')\nbpy.data.materials['Face'].diffuse_color = hex_to_rgb('#"+User.headColor+"')";
|
||||
var leftArmColor = "bpy.data.objects['Left Arm'].select = True\nbpy.data.objects['Left Arm'].active_material.diffuse_color = hex_to_rgb('#"+User.leftArmColor+"')";
|
||||
var rightArmColor = "bpy.data.objects['Right Arm'].select = True\nbpy.data.objects['Right Arm'].active_material.diffuse_color = hex_to_rgb('#"+User.rightArmColor+"')";
|
||||
var torsoColor = "bpy.data.objects['Torso'].select = True\nbpy.data.objects['Torso'].active_material.diffuse_color = hex_to_rgb('#"+User.torsoColor+"')";
|
||||
var leftLegColor = "bpy.data.objects['Left Leg'].select = True\nbpy.data.objects['Left Leg'].active_material.diffuse_color = hex_to_rgb('#"+User.leftLegColor+"')";
|
||||
var rightLegColor = "bpy.data.objects['Right Leg'].select = True\nbpy.data.objects['Right Leg'].active_material.diffuse_color = hex_to_rgb('#"+User.rightLegColor+"')";
|
||||
var colors = headColor+"\n"+leftArmColor+"\n"+torsoColor+"\n"+rightArmColor+"\n"+leftLegColor+"\n"+rightLegColor;
|
||||
|
||||
if(User.hatID != 0) {
|
||||
var hat = "hat_import = bpy.ops.import_scene.obj(filepath='"+hatFilePath+"')\nhat = bpy.context.selected_objects[0]\nbpy.context.selected_objects[0].data.name = 'hat'\nbpy.context.selected_objects[0].name = 'hat'\nhat_material = bpy.data.materials.new('hat')\nhat_material.diffuse_shader = 'LAMBERT'\nhat.active_material = hat_material\nhat_image = bpy.data.images.load(filepath='../rendering/hats/"+User.hatID+".png')\nhat_texture = bpy.data.textures.new('ColorTex', type = 'IMAGE')\nhat_texture.image = hat_image\nhat_add = bpy.data.objects['hat'].active_material.texture_slots.add()\nhat_add.texture = hat_texture";
|
||||
}
|
||||
|
||||
var face = "face_Image = bpy.data.images.load(filepath = '"+faceFilePath+"')\nbpy.data.textures['Face'].image = face_Image";
|
||||
var shirt = "shirt_Image = bpy.data.images.load(filepath = '"+shirtFilePath+"')\nbpy.data.textures['Shirt'].image = shirt_Image\nbpy.data.textures['ShirtR'].image = shirt_Image\nbpy.data.textures['ShirtL'].image = shirt_Image";
|
||||
var pants = "pants_Image = bpy.data.images.load(filepath = '"+pantsFilePath+"')\nbpy.data.textures['PantsR'].image = pants_Image\nbpy.data.textures['PantsL'].image = pants_Image";
|
||||
var render = "for obj in bpy.data.objects:\n obj.select = False\n bpy.ops.object.select_all(action='SELECT')\nbpy.ops.view3d.camera_to_view_selected()\nscene = bpy.context.scene\nscene.render.image_settings.file_format = 'PNG'\nscene.render.filepath = '"+imageSavePath+"'\nbpy.ops.render.render(write_still = 1)";
|
||||
var python = imports+"\n"+functions+"\n"+blenderImport+"\n"+colors+"\n"+hat+"\n"+face+"\n"+shirt+"\n"+pants+"\n"+render;
|
||||
});
|
||||
|
||||
fs.writeFile("../rendering/usercontent/"+req.userData.UserId+".py", python, function(err,data){
|
||||
if(err) { console.log(err) }
|
||||
console.log(data);
|
||||
})
|
||||
|
||||
exec("blender -b -P ../rendering/usercontent/"+req.userData.UserId+".py", (err, stdout, stderr) => {
|
||||
if(err) { console.log(err) }
|
||||
console.log("stdout: " + stdout);
|
||||
console.log("stderr: " + stderr);
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
module.exports = router;
|
||||
const rateLimit = require("express-rate-limit");
|
||||
const { exec } = require('child_process');
|
||||
const limiter = rateLimit({
|
||||
windowMs: 60 * 1000,
|
||||
max: 3,
|
||||
message: "You are being rate limited"
|
||||
});
|
||||
let { User, Sequelize } = require('../models')
|
||||
const Errors = require('../lib/errors')
|
||||
var randomString = (Math.random().toString(36).substring(2))
|
||||
router.use(limiter);
|
||||
router.post("/refresh", limiter, auth, async(req, res, next) => {
|
||||
User.findByPk(req.userData.UserId).then(function(selected){
|
||||
var blendFilePath = "../rendering/avatar.blend";
|
||||
var imageSavePath = "/usr/share/nginx/html/cdn/user/avatars/full/"+req.userData.UserID+"-"+randomString+".png";
|
||||
var pythonFilePath = "../rendering/usercontent/"+req.userData.UserID+".py";
|
||||
var faceFilePath = "../rendering/faces/defaultFace.png";
|
||||
var shirtFilePath = "" + User.shirtID + ".png"; // should be set to 0 by default, 0.png will just be a transparent image
|
||||
var pantsFilePath = "" + User.pantsID + ".png"; // should be set to 0 by default, 0.png will just be a transparent image
|
||||
if(User.hatID != 0) {
|
||||
var hatFilePath = "" + User.hatID + ".obj";
|
||||
}
|
||||
|
||||
var imports = "import bpy";
|
||||
var functions = "def hex_to_rgb(value):\n gamma = 2.05\n value = value.lstrip('#')\n lv = len(value)\n fin = list(int(value[i:i + lv // 3], 16) for i in range(0, lv, lv // 3))\n r = pow(fin[0] / 255, gamma)\n g = pow(fin[1] / 255, gamma)\n b = pow(fin[2] / 255, gamma)\n fin.clear()\n fin.append(r)\n fin.append(g)\n fin.append(b)\n return tuple(fin)";
|
||||
var blenderImport = "bpy.ops.wm.open_mainfile(filepath='"+blendFilePath+"')";
|
||||
var headColor = "bpy.data.objects['Head'].select = True\nbpy.data.materials['Head'].diffuse_color = hex_to_rgb('#"+User.headColor+"')\nbpy.data.materials['Face'].diffuse_color = hex_to_rgb('#"+User.headColor+"')";
|
||||
var leftArmColor = "bpy.data.objects['Left Arm'].select = True\nbpy.data.objects['Left Arm'].active_material.diffuse_color = hex_to_rgb('#"+User.leftArmColor+"')";
|
||||
var rightArmColor = "bpy.data.objects['Right Arm'].select = True\nbpy.data.objects['Right Arm'].active_material.diffuse_color = hex_to_rgb('#"+User.rightArmColor+"')";
|
||||
var torsoColor = "bpy.data.objects['Torso'].select = True\nbpy.data.objects['Torso'].active_material.diffuse_color = hex_to_rgb('#"+User.torsoColor+"')";
|
||||
var leftLegColor = "bpy.data.objects['Left Leg'].select = True\nbpy.data.objects['Left Leg'].active_material.diffuse_color = hex_to_rgb('#"+User.leftLegColor+"')";
|
||||
var rightLegColor = "bpy.data.objects['Right Leg'].select = True\nbpy.data.objects['Right Leg'].active_material.diffuse_color = hex_to_rgb('#"+User.rightLegColor+"')";
|
||||
var colors = headColor+"\n"+leftArmColor+"\n"+torsoColor+"\n"+rightArmColor+"\n"+leftLegColor+"\n"+rightLegColor;
|
||||
|
||||
if(User.hatID != 0) {
|
||||
var hat = "hat_import = bpy.ops.import_scene.obj(filepath='"+hatFilePath+"')\nhat = bpy.context.selected_objects[0]\nbpy.context.selected_objects[0].data.name = 'hat'\nbpy.context.selected_objects[0].name = 'hat'\nhat_material = bpy.data.materials.new('hat')\nhat_material.diffuse_shader = 'LAMBERT'\nhat.active_material = hat_material";
|
||||
}
|
||||
|
||||
var face = "face_Image = bpy.data.images.load(filepath = '"+faceFilePath+"')\nbpy.data.textures['Face'].image = face_Image";
|
||||
var shirt = "shirt_Image = bpy.data.images.load(filepath = '"+shirtFilePath+"')\nbpy.data.textures['Shirt'].image = shirt_Image\nbpy.data.textures['ShirtR'].image = shirt_Image\nbpy.data.textures['ShirtL'].image = shirt_Image";
|
||||
var pants = "pants_Image = bpy.data.images.load(filepath = '"+pantsFilePath+"')\nbpy.data.textures['PantsR'].image = pants_Image\nbpy.data.textures['PantsL'].image = pants_Image";
|
||||
var render = "for obj in bpy.data.objects:\n obj.select = False\n bpy.ops.object.select_all(action='SELECT')\nbpy.ops.view3d.camera_to_view_selected()\nscene = bpy.context.scene\nscene.render.image_settings.file_format = 'PNG'\nscene.render.filepath = '"+imageSavePath+"'\nbpy.ops.render.render(write_still = 1)";
|
||||
var python = imports+"\n"+functions+"\n"+blenderImport+"\n"+colors+"\n"+hat+"\n"+face+"\n"+shirt+"\n"+pants+"\n"+render;
|
||||
|
||||
fs.writeFile("../rendering/usercontent/"+req.userData.UserId+".py", python, function(err,data){
|
||||
if(err) { console.log(err) }
|
||||
console.log(data);
|
||||
})
|
||||
|
||||
exec("blender -b -P ../rendering/usercontent/"+req.userData.UserId+".py", (err, stdout, stderr) => {
|
||||
if(err) { console.log(err) }
|
||||
console.log("stdout: " + stdout);
|
||||
console.log("stderr: " + stderr);
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
module.exports = router;
|
||||
module.exports = router;
|
|
@ -20,4 +20,23 @@ router.get('/', auth, async(req, res, next) => {
|
|||
res.json(transaction)
|
||||
} catch (e) { next(e) }
|
||||
})
|
||||
|
||||
router.post('/', auth, async(req, res, next) => {
|
||||
try {
|
||||
if (
|
||||
req.body.updateActiveItems
|
||||
) {
|
||||
let user = await User.findOne({
|
||||
where: {
|
||||
username: req.userData.username
|
||||
}
|
||||
})
|
||||
|
||||
await user.update({hatId: req.body.hatId, shirtId: req.body.shirtId, pantId: req.body.pantId})
|
||||
res.json({success: true})
|
||||
}
|
||||
res.status(400)
|
||||
res.json({success: false})
|
||||
} catch (e) { next(e) }
|
||||
})
|
||||
module.exports = router
|
||||
|
|
|
@ -104,7 +104,6 @@ if(!config.maintenance) {
|
|||
app.use('/api/v1/kaverti/job-apply', require('./routes/StaffApplications'))
|
||||
app.use('/api/v1/admin/', require('./routes/admin'))
|
||||
app.use('/api/v1/users/render', require('./routes/avatar'))
|
||||
app.use('/api/v1/users/render/', require('./routes/avatar'))
|
||||
app.use('/api/v1/userinfo', require('./routes/userinfo'))
|
||||
app.use('/api/v1/wall', require('./routes/user_wall'))
|
||||
app.use('/api/v1/chat/conversation', require('./routes/conversation'));
|
||||
|
|
Loading…
Reference in New Issue