#!/usr/bin/env ruby require 'json' require_relative './../../xrforge.rb' # Check if a filename is provided if ARGV.length != 1 puts "Usage: #{$0} " exit 1 end filename = ARGV[0] require 'base64' require 'json' begin # Change the directory dir = File.dirname(filename) Dir.chdir( File.dirname(filename) ) # Read and parse the JSON file data = JSON.parse( File.read( "datapackage.json" ) ) ext = File.extname(filename) filenameWithoutExt = File.basename(filename, ext) if ! XRForge::MODEL_EXT.any?( ext ) || ext == ".gltf" exit(0) # not a 3d file end logfile = File.join( File.dirname(filename), ".xrforge/log.txt" ) XRForge.log("✅ generating gltf", logfile) gltf_path = ".xrforge/scene.gltf" system("assimp export #{filename} #{gltf_path} --embed-textures") # tag it! if ! data['keywords'].include?('gltf') data['keywords'].push('gltf') File.write("datapackage.json", JSON.pretty_generate(data) ) end XRForge.log(" ", logfile) rescue Errno::ENOENT puts "File #{filename} not found" rescue JSON::ParserError puts "Error parsing JSON from #{filename}" rescue => e puts "An error occurred: #{e.message}" end