Item Uploading (Hats)
This commit is contained in:
parent
134ddd0d2a
commit
62a6f2816c
|
@ -0,0 +1,13 @@
|
|||
module.exports = {
|
||||
up(queryInterface, Sequelize) {
|
||||
return Promise.all([
|
||||
queryInterface.addColumn(
|
||||
'items',
|
||||
'object',
|
||||
{
|
||||
type: Sequelize.TEXT,
|
||||
},
|
||||
),
|
||||
]);
|
||||
},
|
||||
};
|
|
@ -46,6 +46,9 @@ module.exports = (sequelize, DataTypes) => {
|
|||
previewFile: {
|
||||
type: DataTypes.TEXT
|
||||
},
|
||||
object: {
|
||||
type: DataTypes.TEXT
|
||||
},
|
||||
limited: {
|
||||
type: DataTypes.BOOLEAN,
|
||||
defaultValue: 0,
|
||||
|
|
|
@ -50,7 +50,7 @@
|
|||
"markdown-it-link-attributes": "^3.0.0",
|
||||
"marked": "^0.8.2",
|
||||
"moment": "^2.28.0",
|
||||
"multer": "^1.3.0",
|
||||
"multer": "^1.4.2",
|
||||
"mysql": "^2.13.0",
|
||||
"mysql2": "^2.2.5",
|
||||
"node-email-verification": "^0.0.0",
|
||||
|
|
|
@ -0,0 +1,57 @@
|
|||
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')
|
||||
hat_import = bpy.ops.import_scene.obj(filepath='C:/Users/matth/Documents/GitHub/website//rendering/global/2a1c396a094bcefc8d05cbd9341bac42.obj')
|
||||
hat = bpy.context.selected_objects[0]
|
||||
bpy.context.selected_objects[0].data.name = 'hat'
|
||||
bpy.context.selected_objects[0].name = 'hat'
|
||||
hat_material = bpy.data.materials.new('hat')
|
||||
hat_material.diffuse_shader = 'LAMBERT'
|
||||
hat.active_material = hat_material
|
||||
hat_image = bpy.data.images.load(filepath = 'C:/Users/matth/Documents/GitHub/website//rendering/global/a3f17f571af30dc7fb05d99d23a93f9c.png')
|
||||
hat_texture = bpy.data.textures.new('ColorTex', type = 'IMAGE')
|
||||
hat_texture.image = hat_image
|
||||
hat_add = bpy.data.objects['hat'].active_material.texture_slots.add()
|
||||
hat_add.texture = hat_texture
|
||||
face_Image = bpy.data.images.load(filepath = 'C:/Users/matth/Documents/GitHub/website//rendering/global/defaultFace.png')
|
||||
bpy.data.textures['Face'].image = face_Image
|
||||
shirt_Image = bpy.data.images.load(filepath = 'C:/Users/matth/Documents/GitHub/website//rendering/global/0.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/global/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 = 'C:/xampp21/htdocs//marketplace/preview/9815431927821731096369223060499277863709742347844226889927180960.png'
|
||||
bpy.ops.render.render(write_still = 1)
|
|
@ -59,6 +59,16 @@ router.post("/refresh", limiter, auth, async(req, res, next) => {
|
|||
var imageSavePath = config.cdnFolder + "user/avatars/full/" + img + ".png";
|
||||
var imageSavePathHS = config.cdnFolder + "user/avatars/headshot/" + img + ".png";
|
||||
var pythonFilePath = "rendering/usercontent/"+req.userData.id+".py";
|
||||
if(hatModel.object) {
|
||||
var object = hatModel.object
|
||||
} else {
|
||||
var object = hatModel.sourceFile
|
||||
}
|
||||
if(hatModel.object) {
|
||||
var includePNG = ''
|
||||
} else {
|
||||
var includePNG = '.png'
|
||||
}
|
||||
if(user.faceId) {
|
||||
var faceFilePath = rootPathRender + "rendering/global/" + faceModel.sourceFile;
|
||||
} else {
|
||||
|
@ -75,8 +85,8 @@ router.post("/refresh", limiter, auth, async(req, res, next) => {
|
|||
var pantsFilePath = rootPathRender + "rendering/global/0.png"; // should be set to 0 by default, 0.png will just be a transparent image
|
||||
}
|
||||
if(user.hatId) {
|
||||
var hatFilePath = rootPathRender + "rendering/global/" + hatModel.sourceFile + ".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/global/"+hatModel.sourceFile+".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 hatFilePath = rootPathRender + "rendering/global/" + object
|
||||
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/global/"+hatModel.sourceFile+includePNG+"')\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 = ''
|
||||
}
|
||||
|
|
|
@ -12,6 +12,7 @@ let pagination = require('../lib/pagination')
|
|||
let { Ban, Item, Transaction, Inventory, ItemCategory, User, Ip, sequelize, Sequelize } = require('../models')
|
||||
let img2 = cryptoRandomString({length: 32})
|
||||
const rateLimit = require("express-rate-limit");
|
||||
let path = require("path")
|
||||
const limiter = rateLimit({
|
||||
windowMs: 60 * 1000,
|
||||
max: 100,
|
||||
|
@ -25,7 +26,19 @@ const storage = multer.diskStorage({
|
|||
cb(null, cryptoRandomString({length: 32}) + ".png")
|
||||
}
|
||||
});
|
||||
|
||||
const storageObj = multer.diskStorage({
|
||||
destination: (req, file, cb) => {
|
||||
cb(null, config.rootFolder + '/rendering/global/');
|
||||
},
|
||||
filename: (req, file, cb) => {
|
||||
var name = cryptoRandomString({length: 32})
|
||||
var name2 = name
|
||||
cb(null, name2 + path.extname(file.originalname))
|
||||
}
|
||||
});
|
||||
var uploadObj = multer({
|
||||
storage: storageObj,
|
||||
});
|
||||
var upload = multer({
|
||||
storage: storage,
|
||||
fileFilter: (req, file, cb) => {
|
||||
|
@ -37,16 +50,7 @@ var upload = multer({
|
|||
}
|
||||
}
|
||||
});
|
||||
const storageObj = multer.diskStorage({
|
||||
destination: (req, file, cb) => {
|
||||
cb(null, 'C:/');
|
||||
},
|
||||
filename: (req, file, cb) => {
|
||||
cb(null, cryptoRandomString({length: 32}))
|
||||
}
|
||||
});
|
||||
|
||||
var uploadObj = multer({ storage : storageObj })
|
||||
|
||||
router.get('/', async(req, res) => {
|
||||
try {
|
||||
|
@ -282,6 +286,11 @@ router.put('/rerender/:id', auth, limiter, async (req, res, next) => {
|
|||
var img4 = marketplace.previewFile
|
||||
var imageSavePath = config.cdnFolder + "/marketplace/avatars/" + img4 + ".png";
|
||||
var pythonFilePath = "rendering/marketplacecontent/"+req.userData.id+".py";
|
||||
if(marketplace.object) {
|
||||
var object = marketplace.object
|
||||
} else {
|
||||
var object = marketplace.sourceFile
|
||||
}
|
||||
if(type === "face") {
|
||||
var faceFilePath = rootPathRender + "rendering/global/" + marketplace.sourceFile + ".png";
|
||||
var shirtFilePath = rootPathRender + "rendering/global/0.png";
|
||||
|
@ -304,8 +313,8 @@ router.put('/rerender/:id', auth, limiter, async (req, res, next) => {
|
|||
var faceFilePath = rootPathRender + "rendering/global/defaultFace.png";
|
||||
var shirtFilePath = rootPathRender + "rendering/global/0.png";
|
||||
var pantsFilePath = rootPathRender + "rendering/global/0.png";
|
||||
var hatFilePath = rootPathRender + "rendering/global/" + marketplace.sourceFile + ".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/global/"+marketplace.sourceFile+".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 hatFilePath = rootPathRender + "rendering/global/" + object
|
||||
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/global/"+marketplace.sourceFile+"')\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 imports = "import bpy";
|
||||
|
@ -338,20 +347,12 @@ router.put('/rerender/:id', auth, limiter, async (req, res, next) => {
|
|||
}
|
||||
} catch (e) { next(e) }
|
||||
})
|
||||
router.post('/upload/0', auth, limiter, async (req, res, next) => {
|
||||
router.post('/upload/0', auth, uploadObj.fields([{
|
||||
name: 'image', maxCount: 1
|
||||
}, {
|
||||
name: 'fileObj', maxCount: 1
|
||||
}]), limiter, async (req, res, next) => {
|
||||
try {
|
||||
let form = new formidable.IncomingForm();
|
||||
let crs = cryptoRandomString({length: 32})
|
||||
let img = crs
|
||||
|
||||
form.parse(req);
|
||||
form.keepExtensions = true;
|
||||
form.on('fileBegin', function (name, image){
|
||||
image.path = config.rootFolder + '/rendering/global/' + img + image.name.match(/\.[0-9a-z]+$/i);
|
||||
});
|
||||
form.on('file', function (name, file){
|
||||
console.log('Uploaded File (Hat API) ' + file.name);
|
||||
});
|
||||
let findCategory = await ItemCategory.findOne({
|
||||
where: {id: 0}
|
||||
});
|
||||
|
@ -362,6 +363,9 @@ router.post('/upload/0', auth, limiter, async (req, res, next) => {
|
|||
let user = await User.findOne({
|
||||
where: {id: req.userData.id}
|
||||
});
|
||||
if(!user.admin) {
|
||||
throw Errors.requestNotAuthorized
|
||||
}
|
||||
|
||||
if(findCategory.locked && !user.modeler) {
|
||||
throw Errors.marketplaceAdminOnly
|
||||
|
@ -378,38 +382,21 @@ router.post('/upload/0', auth, limiter, async (req, res, next) => {
|
|||
if(findCategory) {
|
||||
let img3 = cryptoRandomString({length: 32})
|
||||
let img4 = img3
|
||||
console.log(storage)
|
||||
if (req.userData.admin) {
|
||||
var marketplace = Item.create({
|
||||
name: field.name,
|
||||
UserId: user.id,
|
||||
sourceFile: "1",
|
||||
previewFile: img4,
|
||||
limited: field.limited,
|
||||
salePrice: field.onSalePrice,
|
||||
saleEnabled: field.onSale,
|
||||
price: field.price,
|
||||
quantityAllowed: field.quantityAllowed,
|
||||
approved: false,
|
||||
ItemCategoryId: findCategory.id,
|
||||
description: form.field.description
|
||||
})
|
||||
} else {
|
||||
var marketplace = Item.create({
|
||||
name: req.body.name,
|
||||
UserId: user.id,
|
||||
sourceFile: req.file.filename,
|
||||
previewFile: img4,
|
||||
limited: false,
|
||||
salePrice: req.body.onSalePrice,
|
||||
saleEnabled: req.body.onSale,
|
||||
price: req.body.price,
|
||||
quantityAllowed: 0,
|
||||
approved: false,
|
||||
ItemCategoryId: findCategory.id,
|
||||
description: req.body.description
|
||||
})
|
||||
}
|
||||
let marketplace = await Item.create({
|
||||
name: req.body.name,
|
||||
UserId: user.id,
|
||||
sourceFile: req.files.image[0].filename,
|
||||
previewFile: img4,
|
||||
limited: req.body.limited,
|
||||
salePrice: req.body.onSalePrice,
|
||||
saleEnabled: req.body.onSale,
|
||||
price: req.body.price,
|
||||
quantityAllowed: req.body.quantityAllowed,
|
||||
approved: false,
|
||||
ItemCategoryId: findCategory.id,
|
||||
description: req.body.description,
|
||||
object: req.files.fileObj[0].filename
|
||||
})
|
||||
if(marketplace.ItemCategoryId === 0) {
|
||||
var type = "hat"
|
||||
} else if(marketplace.ItemCategoryId === 1) {
|
||||
|
@ -425,15 +412,20 @@ router.post('/upload/0', auth, limiter, async (req, res, next) => {
|
|||
var blendFilePath = rootPathRender + "rendering/avatar.blend";
|
||||
var imageSavePath = config.cdnFolder + "/marketplace/avatars/" + img4 + ".png";
|
||||
var pythonFilePath = "rendering/marketplacecontent/"+req.userData.id+".py";
|
||||
if(marketplace.object) {
|
||||
var object = marketplace.object
|
||||
} else {
|
||||
var object = marketplace.sourceFile
|
||||
}
|
||||
if(type === "face") {
|
||||
var faceFilePath = rootPathRender + "rendering/global/" + marketplace.sourceFile;
|
||||
var faceFilePath = rootPathRender + "rendering/global/" + marketplace.sourceFile + ".png";
|
||||
var shirtFilePath = rootPathRender + "rendering/global/0.png";
|
||||
var pantsFilePath = rootPathRender + "rendering/global/0.png";
|
||||
var hat = ''
|
||||
}
|
||||
if(type === "shirt") {
|
||||
var faceFilePath = rootPathRender + "rendering/global/defaultFace.png";
|
||||
var shirtFilePath = rootPathRender + "rendering/global/" + marketplace.sourceFile; // should be set to 0 by default, 0.png will just be a transparent image
|
||||
var shirtFilePath = rootPathRender + "rendering/global/" + marketplace.sourceFile + ".png"; // should be set to 0 by default, 0.png will just be a transparent image
|
||||
var pantsFilePath = rootPathRender + "rendering/global/0.png";
|
||||
var hat = ''
|
||||
}
|
||||
|
@ -441,14 +433,14 @@ router.post('/upload/0', auth, limiter, async (req, res, next) => {
|
|||
var faceFilePath = rootPathRender + "rendering/global/defaultFace.png";
|
||||
var shirtFilePath = rootPathRender + "rendering/global/0.png";
|
||||
var hat = ''
|
||||
var pantsFilePath = rootPathRender + "rendering/global/" + marketplace.sourceFile; // should be set to 0 by default, 0.png will just be a transparent image
|
||||
var pantsFilePath = rootPathRender + "rendering/global/" + marketplace.sourceFile + ".png"; // should be set to 0 by default, 0.png will just be a transparent image
|
||||
}
|
||||
if(type === "hat") {
|
||||
var faceFilePath = rootPathRender + "rendering/global/defaultFace.png";
|
||||
var shirtFilePath = rootPathRender + "rendering/global/0.png";
|
||||
var pantsFilePath = rootPathRender + "rendering/global/0.png";
|
||||
var hatFilePath = rootPathRender + "rendering/global/" + marketplace.sourceFile + ".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/global/"+marketplace.sourceFile+".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 hatFilePath = rootPathRender + "rendering/global/" + object
|
||||
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/global/"+marketplace.sourceFile+"')\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 imports = "import bpy";
|
||||
|
@ -483,6 +475,59 @@ router.post('/upload/0', auth, limiter, async (req, res, next) => {
|
|||
}
|
||||
} catch (e) { next(e) }
|
||||
})
|
||||
|
||||
router.post('/preview/0', auth, uploadObj.fields([{
|
||||
name: 'image', maxCount: 1
|
||||
}, {
|
||||
name: 'fileObj', maxCount: 1
|
||||
}]), limiter, async (req, res, next) => {
|
||||
let rando = cryptoRandomString({type: "numeric", length: 64})
|
||||
var rand = rando
|
||||
let type = 'hat'
|
||||
const { exec } = require('child_process');
|
||||
var fs = require("fs");
|
||||
let rootPathRender = config.rootFolder + "/";
|
||||
var blendFilePath = rootPathRender + "rendering/avatar.blend";
|
||||
var imageSavePath = config.cdnFolder + "/marketplace/preview/" + rand + ".png";
|
||||
var pythonFilePath = "rendering/preview/"+rand+".py";
|
||||
var object = req.files.fileObj[0].filename
|
||||
|
||||
if(type === "hat") {
|
||||
var faceFilePath = rootPathRender + "rendering/global/defaultFace.png";
|
||||
var shirtFilePath = rootPathRender + "rendering/global/0.png";
|
||||
var pantsFilePath = rootPathRender + "rendering/global/0.png";
|
||||
var hatFilePath = rootPathRender + "rendering/global/" + object
|
||||
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/global/"+req.files.image[0].filename+"')\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 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('#ffffff')\nbpy.data.materials['Face'].diffuse_color = hex_to_rgb('#ffffff')";
|
||||
var leftArmColor = "bpy.data.objects['Left Arm'].select = True\nbpy.data.objects['Left Arm'].active_material.diffuse_color = hex_to_rgb('#ffffff')";
|
||||
var rightArmColor = "bpy.data.objects['Right Arm'].select = True\nbpy.data.objects['Right Arm'].active_material.diffuse_color = hex_to_rgb('#ffffff')";
|
||||
var bodyColor = "bpy.data.objects['Torso'].select = True\nbpy.data.objects['Torso'].active_material.diffuse_color = hex_to_rgb('#ffffff')";
|
||||
var leftLegColor = "bpy.data.objects['Left Leg'].select = True\nbpy.data.objects['Left Leg'].active_material.diffuse_color = hex_to_rgb('#ffffff')";
|
||||
var rightLegColor = "bpy.data.objects['Right Leg'].select = True\nbpy.data.objects['Right Leg'].active_material.diffuse_color = hex_to_rgb('#ffffff')";
|
||||
var colors = headColor+"\n"+leftArmColor+"\n"+bodyColor+"\n"+rightArmColor+"\n"+leftLegColor+"\n"+rightLegColor;
|
||||
|
||||
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/preview/"+rand+".py", python, function(err,data){
|
||||
if(err) { console.log(err) }
|
||||
})
|
||||
exec("blender -b -P rendering/preview/"+rand+".py", (err, stdout, stderr) => {
|
||||
if(err) { console.log(err) }
|
||||
console.log("stdout: " + stdout);
|
||||
console.log("stderr: " + stderr);
|
||||
res.status(200)
|
||||
res.json({image: rand})
|
||||
});
|
||||
})
|
||||
|
||||
router.post('/upload/:id', auth, limiter, async (req, res, next) => {
|
||||
try {
|
||||
let form = new formidable.IncomingForm();
|
||||
|
|
|
@ -25,6 +25,23 @@ router.get('/', auth, auth, async(req, res, next) => {
|
|||
} catch (err) { next(err) }
|
||||
})
|
||||
|
||||
router.get('/banStatus', auth, async(req, res, next) => {
|
||||
try {
|
||||
let queryObj = {
|
||||
where: {UserId: req.userData.id}
|
||||
}
|
||||
let user = await Ban.findOne(queryObj)
|
||||
if(!user) {
|
||||
res.status(200)
|
||||
res.json({success: true, user: { ReadOnlyMode: false, ipBanned: false, DisableLogin: false, message: "Not banned" }, banned: false})
|
||||
res.end()
|
||||
} else {
|
||||
res.status(200)
|
||||
res.json({success: true, user, banned: true})
|
||||
}
|
||||
} catch (err) { next(err) }
|
||||
})
|
||||
|
||||
router.get('/auth', auth2, async(req, res, next) => {
|
||||
try {
|
||||
let queryObj = {
|
||||
|
|
|
@ -3615,7 +3615,7 @@ ms@^2.0.0, ms@^2.1.1:
|
|||
resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2"
|
||||
integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==
|
||||
|
||||
multer@^1.3.0:
|
||||
multer@^1.4.2:
|
||||
version "1.4.2"
|
||||
resolved "https://registry.yarnpkg.com/multer/-/multer-1.4.2.tgz#2f1f4d12dbaeeba74cb37e623f234bf4d3d2057a"
|
||||
integrity sha512-xY8pX7V+ybyUpbYMxtjM9KAiD9ixtg5/JkeKUTD6xilfDv0vzzOFcCp4Ljb1UU3tSOM3VTZtKo63OmzOrGi3Cg==
|
||||
|
|
Loading…
Reference in New Issue