Insimenator.org
April 29, 2024, 09:17:30 am *
Welcome, Guest. Please login or register.

Login with username, password and session length
News:
 
  Home Forum Help Search Calendar Login Register  
  Show Posts
Pages: 1 ... 5 6 [7] 8 9 ... 164
91  A Safe Haven / General Discussion / Re: I'm back!! on: July 16, 2010, 09:45:32 am
Glad to see you back around, Cindra!  Grin
92  Simmers' Paradise / Clothing & Body Mesh's / MOVED: Stephanie O'Brien Sim??? on: July 13, 2010, 05:23:36 pm
This topic has been moved to Sims.

http://www.insimenator.org/index.php?topic=110590.0
93  Retired Creators / Guest Recolors / Re: Seperate Baby Outfits for Boys and Giirls on: July 09, 2010, 02:08:05 pm
How is one to change the infant outfit so it will be a onesie that the girls wear instead of the dress?

In SimPE, you'll have to import the onesie mesh into Chris' file, and also replace the texture included with the onesie texture and alpha. 
94  Simmers' Paradise / Where Can I Find...? / Re: Shower Proof Satyrs on: July 09, 2010, 01:50:55 pm
Quick question... are you keeping your game running as you're adding the files to your Downloads folder?  From your post above, that's what it sounds like you're doing.  If so, exit out the game and then go back to the game.  The skin tones should show up then.  Sims 2 wasn't made to auto-update content while running, unfortunately.

But if that's not what you're doing, disregard this post.  Wink
95  Simmers' Paradise / Where Can I Find...? / Re: Shower Proof Satyrs on: July 09, 2010, 06:05:46 am
Did you download and extract all the required meshes for those skintones to work?  When you have showerproof skin tones, you always need the "top" and "bottom" meshes linked to that specific body shape, which in this case are included in the thread Joy linked to.  There are also extra accessories that go with it, if I'm reading the thread correctly.  Smiley
96  Simmers' Paradise / Where Can I Find...? / Re: Grippy Hooves Mod on: July 08, 2010, 05:15:32 am
Yeah, depending on how the "footstep" sound effect is set up in the texture files for the satyr outfits, it's possible to hear the "hoof" click noise when a sim is wearing the outfits.  Smiley 
97  Simmers' Paradise / Where Can I Find...? / Re: Grippy Hooves Mod on: July 07, 2010, 09:00:17 pm
It's not really possible.  That would probably require some intense animation changes/add-ons and modifications that no one that still fiddles around with mods for Sims 2 can even accomplish.  The only people who would be able to do that are the people who made the game, and they've already pretty much abandoned Sims 2, other than re-releases of bundled EPs and SPs.
98  Simmers' Paradise / Where Can I Find...? / Re: Vampire Mod on: July 03, 2010, 09:31:48 pm
Removed extra smiley spam. 

Smilies are pretty and shiny, we know and it's tempting to use as many as possible in one post; however, please don't. One or two is OK, but going wild with them is just plain obnoxious and we will feed you to the angry, malnourished trolls Jenna keeps locked in the basement if you succumb to smiley abuse.
99  Welcome to insimenator.org / Issues & Suggestions / Re: Why won't the icon show up when I upload files? Help please. on: July 02, 2010, 03:39:57 pm
Glad to help.  Wink
100  Welcome to insimenator.org / Issues & Suggestions / Re: Why won't the icon show up when I upload files? Help please. on: July 01, 2010, 02:23:20 pm
You have to attach your image first, then the actual upload.  From what I see, you uploaded the file before the image.  Wink
101  The Sims 3 / Sims 3 Help / MOVED: WCIF a mod for Multiple Marriages on: June 29, 2010, 06:09:08 pm
This topic has been moved to Pudding WCIF.

http://www.insimenator.org/index.php?topic=110454.0
102  Simmers' Paradise / Where Can I Find...? / Re: Musical Instruments? on: June 26, 2010, 09:08:21 am
Thanks for the offer!   Grin  Here's a few of them:

Saxophone
Flute
Trumpet (Alternate)
Trombone

I can't seem to remember where I saw a free clarinet at, though, and I wasn't able to find a tin whistle or banjo yet (I'm positive they've been made, they probably aren't free, though)... I'm still learning meshing "from scratch" methods in Blender, so if I even tried to make one of those now, it wouldn't even look like the real thing.   tongue 
103  Simmers' Paradise / Where Can I Find...? / Re: Musical Instruments? on: June 26, 2010, 07:49:04 am
There's some chinese instrument pose boxes and accessories here and here, if those were the ones you were talking about, Raven.   cool

I was working on converting some free-use 3d instruments as accessories to fit with those poses at one point, but they were so high-poly that even opening and importing them into Blender caused my laptop to crash.    Cheesy  Perhaps I'll try again one day once the contest I'm in is done.   Wink
104  Simmers' Paradise / Tutorials / Re: Tutorial: Bodyshop Meshing with Blender 3D v2.45 (Part I) **A Bit Image Heavy!** on: June 26, 2010, 06:42:50 am
Absolutely no idea.   Cry  I've been trying to figure this out for the longest time now, but I think I've only narrowed it down to the way Bobcatben has it written in his code.  (I'm too scared to edit and try it out, though.)  From the Import script:


#9/12/2007 version 0.3: reAdded importing of normals(results in some duplicate vertices's but fixes the normal problem, still recalculating them, but this keeps it from merging vertices's with different normals)

So... I haven't gotten the gist of Python scripts.  Hopefully someone out there knows how to read/code them and figure out a way to import the normals without recalculating them.    

ETA:  Here are how the actual scripts look like, if anyone is interested:

Code: (import_smd.py)
#!BPY

"""
Name: 'Sims 2 smd file'
Blender: 244
Group: 'Import'
Tooltip: 'imports a smd file from sims 2(doubt it will work on other smd's)'
"""
__author__ = "Bobcatben"
__url__ = ["", ""]
__version__ = "0.3"

__bpydoc__ = """\
"""

#9/12/2007 version 0.3: reAdded importing of normals(results in some duplicate vertices's but fixes the normal problem, still recalculating them, but this keeps it from merging vertices's with different normals)

from Blender import *
from Blender.Mathutils import *
from math import *

def mat(x,y,z,rx,ry,rz):
rotmat = RotationMatrix(rx,4,'x') * RotationMatrix(ry,4,'y') * RotationMatrix(rz,4,'z')
transmat = TranslationMatrix(Vector(x,y,z))
mat2 = rotmat * transmat
del rotmat
del transmat
return mat2

class Bone:
id = 0
name = ""
parentid = 0
matrix = None
def __init__(this,id,name,pid):
this.id = id
this.name = name
this.parentid = pid

def add(a, tup):
if tup in a:
return a.index(tup)
else:
a.append(tup)
return len(a)-1

def import_smd(path):
editmode = Window.EditMode()
if editmode: Window.EditMode(0)
IMPORT_SKELETON = Draw.Create(1)
IMPORT_MESH = Draw.Create(1)
pup_block = [\
('Import Options'),\
('Mesh' ,IMPORT_MESH , 'Import the Mesh?'),\
('Skeleton' ,IMPORT_SKELETON , 'Import the Skeleton?')
]
if not Draw.PupBlock('Import...', pup_block):
return
import_mesh = IMPORT_MESH.val
import_skeleton = IMPORT_SKELETON.val
Window.WaitCursor(1)
name = path.split('\\')[-1].split('/')[-1]
file = open(path, 'r')
scn = Scene.GetCurrent()
Bones = []
faces = []
verts = []
Window.DrawProgressBar(0.0,'')
lines = file.readlines()
for i in range(0, len(lines)):
line = lines[i]
words = line.split()
#do the nodes
if line.startswith('nodes') and import_skeleton:
Window.DrawProgressBar(0.0,'Reading Nodes')
arm = Armature.New('Bones')
arm.envelopes = False
arm.makeEditable()
armob = scn.objects.new(arm,"Bones")
start = i + 1
for i in range(start, len(lines)):
line = lines[i]
words = line.split()
if line.startswith('end'):
break
tmpbone = Armature.Editbone()
bonename = words[1][1:-1]
Bones.append(Bone(int(words[0]),bonename,int(words[2])))
if int(words[2]) > -1:
tmpbone.parent = arm.bones[ Bones[int(words[2])].name ]
arm.bones[bonename] = tmpbone
#do the skeleton
if line.startswith('skeleton') and import_skeleton:
Window.DrawProgressBar(0.1,'Reading Skeleton')
start = i + 1
for i in range(start, len(lines)):
line = lines[i]
words = line.split()
if line.startswith('end'):
break
if len(words) <= 2:
continue
tx, ty, tz = float(words[1]), float(words[2]), float(words[3])
rx, ry, rz = degrees(float(words[4])), degrees(float(words[5])), degrees(float(words[6]))
boneindex = int(words[0])
bone = arm.bones[Bones[boneindex].name]
parentindex = Bones[boneindex].parentid
matrix = mat(tx,ty,tz,rx,ry,rz)
if(parentindex > -1):
parent = arm.bones[Bones[parentindex].name]
parentmatrix = Bones[parentindex].matrix
matrix = matrix * parentmatrix
myhead = Vector([0,0,0,1]) * matrix
mytail = Vector([0,0.1,0,1]) * matrix
myhead.resize3D()
mytail.resize3D()
bone.head = myhead
bone.tail = mytail
Bones[boneindex].matrix = matrix
else:
myhead = Vector([0,0,0,1]) * matrix
mytail = Vector([0,0.1,0,1]) * matrix
myhead.resize3D()
mytail.resize3D()
bone.head = myhead
bone.tail = mytail
Bones[boneindex].matrix = matrix
#do the mesh itself(triangles)
if line.startswith('triangles') and import_mesh:
Window.DrawProgressBar(0.2,'Reading Mesh')
start = i + 1
faceverts = []
facetex = []
for i in range(start, len(lines)):
line = lines[i]
words = line.split()
if line.startswith('end'):
break
if len(words) < 3:
continue
#get the vertex data, excluding normals as they dont like to import correctly
#so we will just have blender recalculate normals at the end, after we remove duplicate vertex's
x, y, z, tx, ty = float(words[1]), float(words[2]), float(words[3]), float(words[7]), float(words[8])
nx, ny, nz = float(words[4]), float(words[5]), float(words[6])
tmp = []
if len(words) >= 10:
for w in range(0,int(words[9])*2,2):
tmp.append([ int(words[10+w]), float(words[11+w]) ])
faceverts.append(add(verts,[x, y, z,nx,ny,nz, tmp])+1)
facetex.append([tx, ty])

#faces every 3 vertex's
if len(faceverts) == 3:
faces.append([faceverts,facetex])
facetex = []
faceverts = []
#now send them to blender.
Window.DrawProgressBar(0.4,'Writing Vertices')
mesh = Mesh.New('Imported Object')
meshob = scn.objects.new(mesh, 'Imported Object')
mesh.verts.extend([[0,0,0]])
for v in verts:
mesh.verts.extend([[v[0],v[1],v[2]]])
mesh.verts[-1:][0].no[0] = v[3]
mesh.verts[-1:][0].no[1] = v[4]
mesh.verts[-1:][0].no[2] = v[5]
Window.DrawProgressBar(0.6,'Writing Faces')
for f in faces:
mesh.faces.extend([f[0]],ignoreDups=True)
mesh.faces[len(mesh.faces)-1].image = Image.GetCurrent()
mesh.faces[len(mesh.faces)-1].uv = [Vector(f[1][0]),Vector(f[1][1]),Vector(f[1][2])]
mesh.verts.delete([0])
mesh.calcNormals()


file.close()
if import_skeleton and import_mesh:
Window.DrawProgressBar(0.9,'Creating vertex groups')
for b in Bones:
mesh.addVertGroup(b.name)
Window.DrawProgressBar(0.95,'Weighting vertices')
for vi in range(0, len(verts)):
for weight in verts[vi][6]:
mesh.assignVertsToGroup( Bones[weight[0]].name, [vi],weight[1],1)
if import_skeleton:
arm.update()
if import_skeleton and import_mesh:
armob.makeParentDeform([meshob], 0, 0)
Window.DrawProgressBar(1.0,'Done')
Window.WaitCursor(0)
Window.RedrawAll()


Window.FileSelector(import_smd, 'Import')

Code: (export_smd.py)
#!BPY

"""
Name: 'Sims 2 smd file'
Blender: 244
Group: 'Export'
Tooltip: 'Exports a smd file tailored for the sims 2'
"""
__author__ = "Bobcatben"
__url__ = ["", ""]
__version__ = "0.5"

__bpydoc__ = """\
"""

#Oct 27th 2007, V0.5: Added Normalization of bone weighting.
#Sept 22nd 2007, V0.4: Added more error handlers.
#Sept 20th 2007, Version 0.3: Added a check for vertex groups with no matching bones.

from Blender import *
from Blender.Mathutils import *
from math import *

armmat = Matrix()

class Bone:
    id = 0
    name = ""
    parentid = 0
    matrix = None
    pos = Vector()
    rot = Euler()
    def __init__(this,id,name,pid,mat):
        this.id = id
        this.name = name
        this.parentid = pid
        this.matrix = mat * armmat

def findbone(name,bones):
    for b in bones:
        if b.name == name:
            return b

def recursebones(bone,bones,pid):
    thisbone = Bone(len(bones),bone.name,pid,bone.matrix['ARMATURESPACE'])
    bones.append(thisbone)
    for b in bone.children:
        if b.hasChildren():
            recursebones(b,bones,thisbone.id)
        else:
            bones.append(Bone(len(bones),b.name,thisbone.id,b.matrix['ARMATURESPACE']))

#rounds it to 6 decimal places
def cleanvalue(value):
    if fabs( value ) < 1e-6:
        return 0
    else:
        return round( value, 6 )

def error(text):
    Draw.PupMenu("Error%t|"+text)

#checks if the object has a child that is a mesh
def hasmeshchild(obj):
    for o in Object.Get():
        if o.getType() == 'Mesh' and o.parent == obj:
            return True
    return False

#gets the first child object that is a mesh
def getmeshchild(obj):
    for o in Object.Get():
        if o.getType() == 'Mesh' and o.parent == obj:
            return o
    return None

def export_smd(path):
    global armmat
    editmode = Window.EditMode()
    if editmode: Window.EditMode(0)
    if not path.lower().endswith('.smd'):
        path += '.smd'
    name = path.split('\\')[-1].split('/')[-1]
    
    #step 1, find a armature with a attached mesh
    foundone = False
    for o in Object.Get():
        if o.getType() == 'Armature' and hasmeshchild(o):
            #arm = Armature.Get(o.getName())
            arm = o.getData()
            armmat = o.getMatrix().rotationPart()
            armmat.resize4x4()
            meshob = getmeshchild(o)
            mesh = meshob.getData(mesh=True)
            foundone = True
            break
    
    #if step 1 fails, find just a mesh.
    if not foundone:
        foundmesh = False
        for o in Object.Get():
            if o.getType() == 'Mesh':
                mesh = o.getData(mesh=True)
                foundmesh = True
                break
        if not foundmesh:
            error("No Mesh or Armature")
            return
    
    #step 2, if theres bones, process
    if foundone:
        Bones = []
        for b in arm.bones.values():
            if not b.hasParent():
                recursebones(b,Bones,-1)
        for b in Bones:
            if b.parentid > -1:
                inverseparent = Matrix(Bones[b.parentid].matrix)
                inverseparent.invert()
                mat = b.matrix * inverseparent
                del inverseparent
            else:
                mat = b.matrix
            b.pos = mat.translationPart()
            b.rot = mat.toEuler()
            del mat
    #step 2.5, if no bones, generate a dummy bone
    else:
        Bones = [Bone(0,'SmdMiscBone',-1,Matrix())]
        Bones[0].pos = Bones[0].matrix.translationPart()
        Bones[0].rot = Bones[0].matrix.toEuler()
    
    #step 3, write the beginning of the file
    file = open(path, 'w')
    file.write('version 1\n')
    
    #step 4, write the bone hierarchy
    file.write('nodes\n')
    for b in Bones:
        file.write("%d \"%s\" %d\n"%(b.id,b.name,b.parentid))
    file.write('end\n')
    
    #step 5, write the skeleton data
    file.write('skeleton\n')
    file.write('time 0\n')
    for b in Bones:
        file.write("%d %f %f %f %f %f %f\n"%(b.id,cleanvalue(b.pos.x),cleanvalue(b.pos.y),cleanvalue(b.pos.z),cleanvalue(radians(b.rot.x)),cleanvalue(radians(b.rot.y)),cleanvalue(radians(b.rot.z))  ))
    file.write('end\n')
    
    #step 6, write the mesh
    file.write('triangles\n')
    for face in mesh.faces:
        file.write('map.bmp\n')
        vi = 0
        if len(face.verts) != 3:
            if Draw.PupMenu("The mesh contains quads, The Sims 2 only supports triangles.%t|Convert to Triangles|Abort") == 1:
                mesh.quadToTriangle()
            else:
                file.close()
                return
        for v in face.verts:
            #write the vertex location
            file.write("0 %f %f %f"%( cleanvalue(v.co[0]),cleanvalue(v.co[1]),cleanvalue(v.co[2]) ))
            #write the vertex normal
            file.write(" %f %f %f"%( cleanvalue(v.no[0]),cleanvalue(v.no[1]),cleanvalue(v.no[2]) ))
            #write the uv coordinate
            try:
                file.write(" %f %f"%( face.uv[vi][0],face.uv[vi][1] ))
            except ValueError:
                error("Mesh has no texture")
                file.close()
                return
            vi+= 1
            inf = mesh.getVertexInfluences(v.index)
            if len(inf) > 4:
                    error("Too many vertex groups on a single vertex, %d (4 max)"%len(inf))
                    file.close()
                    return
            file.write(" %d"%len(inf))
            if len(inf) > 0:
tweight = 0.0
mul = 1.0
for ww in inf:
   tweight += ww[1]
if tweight != 1.0:
   mul = 1.0 / tweight
                for w in inf:
                        thisbone = findbone(w[0],Bones)
                        if thisbone != None:
                                file.write(" %d %f"%( thisbone.id, w[1]*mul ))
                file.write('\n')
            else:
                file.write('\n')
    file.write('end\n')
    file.close()
    if editmode: Window.EditMode(1)

Window.FileSelector(export_smd, 'Export')
   

ETA2:  There is a button for Auto Smoothing in Blender's Mesh Panel, but that's turned off by default.  (If it's a light-green color, it's off)
105  Simmers' Paradise / Where Can I Find...? / Re: WCIF shoulder-length teenage male hair? on: June 24, 2010, 09:26:22 pm
If you have an account with MTSN, you can check this out.  Scroll down to Comment #9 to find Owaiz's long teen hair mesh.  May not be as curly as his, but it's about just as long.  Wink
Pages: 1 ... 5 6 [7] 8 9 ... 164

Powered by MySQL Powered by PHP Powered by SMF 1.1.21 | SMF © 2015, Simple Machines Valid XHTML 1.0! Valid CSS!
Page created in 0.031 seconds with 28 queries.
SimplePortal 2.1.1