Newer
Older
# ##### BEGIN GPL LICENSE BLOCK #####
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License
# as published by the Free Software Foundation; either version 2
# of the License, or (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software Foundation,
# Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
#
# ##### END GPL LICENSE BLOCK #####
import subprocess
import os
import sys
import time
import math
if pltfrm.architecture()[0] == "64bit":
Constantin Rahn
committed
##############################SF###########################
##############find image texture
dotidx = path.rfind(".")
return path, ""
return path[dotidx:].upper().replace(".", "")
Maurice Raybaud
committed
ext = ""
if ext_orig == 'JPG' or ext_orig == 'JPEG':
ext = "jpeg"
ext = "gif"
ext = "tga"
ext = "iff"
ext = "ppm"
ext = "png"
ext = "sys"
elif ext_orig in ('TIFF', 'TIF'):
ext = "tiff"
ext = "exr" # POV3.7 Only!
ext = "hdr" # POV3.7 Only! --MR
print(" WARNING: texture image format not supported ") # % (imgF , "")) #(ext_orig)))
image_map = ""
if ts.mapping == 'FLAT':
image_map = "map_type 0 "
elif ts.mapping == 'SPHERE':
image_map = "map_type 1 " # map_type 7 in megapov
elif ts.mapping == 'TUBE':
image_map = "map_type 2 "
#elif ts.mapping=="?":
# image_map = " map_type 3 " # map_type 3 and 4 in development (?) for POV-Ray, currently they just seem to default back to Flat (type 0)
#elif ts.mapping=="?":
# image_map = " map_type 4 " # map_type 3 and 4 in development (?) for POV-Ray, currently they just seem to default back to Flat (type 0)
if ts.texture.use_interpolation:
image_map += " interpolate 2 "
if ts.texture.extension == 'CLIP':
image_map += " once "
#image_map += "}"
#if ts.mapping=='CUBE':
# image_map+= "warp { cubic } rotate <-90,0,180>" # no direct cube type mapping. Though this should work in POV 3.7 it doesn't give that good results(best suited to environment maps?)
# print(" No texture image found ")
image_mapBG = ""
if wts.texture_coords == 'VIEW':
image_mapBG = " map_type 0 " # texture_coords refers to the mapping of world textures
elif wts.texture_coords == 'ANGMAP':
image_mapBG = " map_type 1 "
elif wts.texture_coords == 'TUBE':
image_mapBG = " map_type 2 "
if wts.texture.use_interpolation:
image_mapBG += " interpolate 2 "
if wts.texture.extension == 'CLIP':
image_mapBG += " once "
#image_mapBG += "}"
#if wts.mapping == 'CUBE':
# image_mapBG += "warp { cubic } rotate <-90,0,180>" # no direct cube type mapping. Though this should work in POV 3.7 it doesn't give that good results(best suited to environment maps?)
#if image_mapBG == "":
# print(" No background texture image found ")
idx = path.rfind("/")
idx = path.rfind("\\")
return path[idx:].replace("/", "").replace("\\", "")
idx = path.rfind("/")
return path, ""
def findInSubDir(filename, subdirectory=""):
pahFile = ""
if subdirectory:
path = subdirectory
else:
path = os.getcwd()
try:
for root, dirs, names in os.walk(path):
if filename in names:
pahFile = os.path.join(root, filename)
return pahFile
return ""
def path_image(image):
import os
fn = bpy.path.abspath(image)
fn_strip = os.path.basename(fn)
if not os.path.isfile(fn):
fn = findInSubDir(splitFile(fn), splitPath(bpy.data.filepath))
##############end find image texture
Maurice Raybaud
committed
def splitHyphen(name):
hyphidx = name.find("-")
Maurice Raybaud
committed
if hyphidx == -1:
return name
else:
return name[hyphidx:].replace("-", "")
def safety(name, Level):
# safety string name material
#
# Level=1 is for texture with No specular nor Mirror reflection
# Level=2 is for texture with translation of spec and mir levels for when no map influences them
# Level=3 is for texture with Maximum Spec and Mirror
Maurice Raybaud
committed
prefix = ""
Maurice Raybaud
committed
name = splitHyphen(name)
return prefix + name + "0" # used for 0 of specular map
return prefix + name + "1" # used for 1 of specular map
Maurice Raybaud
committed
##############end safety string name material
##############################EndSF###########################
Constantin Rahn
committed
TabLevel = 0
import mathutils
file = open(filename.name, "w")
# Only for testing
if not scene:
scene = bpy.data.scenes[0]
render = scene.render
world = scene.world
global_matrix = mathutils.Matrix.Rotation(-pi / 2.0, 4, 'X')
Constantin Rahn
committed
def setTab(tabtype, spaces):
TabStr = ""
Constantin Rahn
committed
if tabtype == '0':
TabStr = ""
TabStr = "\t"
Constantin Rahn
committed
elif tabtype == '2':
TabStr = spaces * " "
Constantin Rahn
committed
return TabStr
Tab = setTab(scene.pov_indentation_character, scene.pov_indentation_spaces)
Constantin Rahn
committed
def tabWrite(str_o):
global TabLevel
brackets = str_o.count("{") - str_o.count("}") + str_o.count("[") - str_o.count("]")
Constantin Rahn
committed
if brackets < 0:
TabLevel = TabLevel + brackets
Constantin Rahn
committed
if TabLevel < 0:
print("Indentation Warning: TabLevel = %s" % TabLevel)
Constantin Rahn
committed
TabLevel = 0
file.write("%s" % Tab * TabLevel)
Constantin Rahn
committed
file.write(str_o)
if brackets > 0:
TabLevel = TabLevel + brackets
Constantin Rahn
committed
def uniqueName(name, nameSeq):
if name not in nameSeq:
return name
name_orig = name
i = 1
while name in nameSeq:
name = "%s_%.3d" % (name_orig, i)
Maurice Raybaud
committed
name = splitHyphen(name)
Loading
Loading full blame...