class Mittsu::MTLLoader
Public Class Methods
new(base_url, options = {})
click to toggle source
# File lib/mittsu/loaders/mtl_loader.rb, line 5 def initialize(base_url, options = {}) @base_url = base_url @options = options end
Public Instance Methods
load(url)
click to toggle source
# File lib/mittsu/loaders/mtl_loader.rb, line 10 def load(url) loader = FileLoader.new text = loader.load File.join(@base_url, url) parse(text) end
parse(text)
click to toggle source
# File lib/mittsu/loaders/mtl_loader.rb, line 17 def parse(text) lines = text.split("\n") info = {} delimiter_pattern = /\s+/ materials_info = {} lines.each do |line| line = line.strip next if line.empty? || line.start_with?('#') pos = line.index(' ') key = ( pos >= 0 ) ? line[0...pos] : line key = key.downcase value = ( pos >= 0 ) ? line[pos + 1..-1] : "" value = value.strip if key == "newmtl" info = { name: value }; materials_info[value] = info elsif info if key == "ka" || key == "kd" || key == "ks" info[key] = value.split(delimiter_pattern).take(3).map(&:to_f) else info[key] = value end end end MaterialCreator.new(@base_url, @options).tap do |material_creator| material_creator.set_materials(materials_info) end end