Blender (jusqu'à 2.49)
|
Speed
test
Module
Mesh versus NMesh
|
|
To create only
vertices : Bad method (Nmesh is the winner)
import Blender
from Blender import *
LIM=10000
DIM=3.0
me=NMesh.GetRaw()
t0=sys.time()
for i in range(LIM):
me.verts.append(NMesh.Vert(Noise.random()*DIM,Noise.random()*DIM,Noise.random()*DIM))
NMesh.PutRaw(me,'NMESH_')
t2=sys.time()-t0
print t2 # 0.3 second on my computer
# now be very patient :)
t0=sys.time()
Window.EditMode(0)
me=Mesh.New('MESH_')
sc=Scene.getCurrent()
ob=Object.New('Mesh')
ob.link(me)
sc.link(ob)
ob.select(1)
Window.EditMode(1)
Window.EditMode(0)
random=Noise.random()
t0=sys.time()
for i in range(LIM):
me.verts.extend(Noise.random()*DIM,Noise.random()*DIM,Noise.random()*DIM)
t1=sys.time()-t0
print t1
# 277 seconds on my computer !!!!
print t1/t2 |
To create only
vertices : Good method (Mesh is the winner)
import Blender
from Blender import *
LIM=100000
DIM=3.0
me=NMesh.GetRaw()
t0=sys.time()
for i in range(LIM):
me.verts.append(NMesh.Vert(Noise.random()*DIM,Noise.random()*DIM,Noise.random()*DIM))
NMesh.PutRaw(me,'NMESH_')
t2=sys.time()-t0
print t2 # always 0.3 second on my computer
t0=sys.time()
Window.EditMode(0)
me=Mesh.New('MESH_')
sc=Scene.getCurrent()
ob=Object.New('Mesh')
ob.link(me)
sc.link(ob)
ob.select(1)
Window.EditMode(1)
Window.EditMode(0)
random=Noise.random()
t0=sys.time()
# ------------------
# Method advised by : Ken Hughes
# ------------------
verts=[]
for i in range(LIM):
verts.append((Noise.random()*DIM,
Noise.random()*DIM,Noise.random()*DIM))
me.verts.extend(verts)
t1=sys.time()-t0
print t1
# 0.289 second
print t1/t2
|
To create
vertices + faces : method (Mesh is the winner...)
import Blender
from Blender import *
LIM=10000
DIM=3.0
me=NMesh.GetRaw()
t0=sys.time()
for i in range(LIM):
me.verts.append(NMesh.Vert(Noise.random()*DIM,Noise.random()*DIM,Noise.random()*DIM))
for v in range(0,len(me.verts)-2,3):
f=NMesh.Face()
[f.append(me.verts[v+n]) for n in 0,1,2]
me.faces.append(f)
NMesh.PutRaw(me,'NMESH_')
t2=sys.time()-t0
print t2 # always 0.3 second on my computer
t0=sys.time()
Window.EditMode(0)
me=Mesh.New('MESH_')
sc=Scene.getCurrent()
ob=Object.New('Mesh')
ob.link(me)
sc.link(ob)
ob.select(1)
Window.EditMode(1)
Window.EditMode(0)
random=Noise.random()
t0=sys.time()
# ------------------
# Method advised by : Ken Hughes
# ------------------
verts=[]
for i in range(LIM):
verts.append((Noise.random()*DIM,
Noise.random()*DIM,Noise.random()*DIM))
me.verts.extend(verts)
# ------------------
# Waiting for a best method
# ------------------
faces=[]
for v in range(0,len(me.verts)-2,3):
faces.append([me.verts[v],me.verts[v+1],me.verts[v+2]])
me.faces.extend(faces)
t1=sys.time()-t0
print t1
print t1/t2 |
Index()
problem ..
import Blender
from Blender import *
LIM=1000
DIM=3.0
me=NMesh.GetRaw()
t0=sys.time()
for i in range(LIM):
me.verts.append(NMesh.Vert(Noise.random()*DIM,Noise.random()*DIM,Noise.random()*DIM))
for v in range(0,len(me.verts)-2,3):
f=NMesh.Face()
[f.append(me.verts[v+n]) for n in 0,1,2]
me.faces.append(f)
#------------------
# Here no problem to get the verts index :
#------------------
print 'v index in verts',me.verts.index(me.faces[-1].v[0]),
#------------------
# It works perfectely...
#------------------
NMesh.PutRaw(me,'NMESH_')
t2=sys.time()-t0
print t2 # always 0.3 second on my computer
t0=sys.time()
Window.EditMode(0)
me=Mesh.New('MESH_')
sc=Scene.getCurrent()
ob=Object.New('Mesh')
ob.link(me)
sc.link(ob)
ob.select(1)
Window.EditMode(1)
Window.EditMode(0)
random=Noise.random()
t0=sys.time()
# ------------------
# Method advised by : Ken Hughes
# ------------------
verts=[]
for i in range(LIM):
verts.append((Noise.random()*DIM,
Noise.random()*DIM,Noise.random()*DIM))
me.verts.extend(verts)
# ------------------
# Waiting for a best method
# ------------------
faces=[]
for v in range(0,len(me.verts)-2,3):
faces.append([me.verts[v],me.verts[v+1],me.verts[v+2]])
#------------------
# Here a call to the index function ...:
#------------------
print 'v index in verts',me.verts.index(faces[-1][0]),
#------------------
# return an error :
# """
# Traceback (most recent call last):
# File "Text", line 45, in ?
# AttributeError: 'Blender MVertSeq' object has no attribute
'index'
# """
#------------------
me.faces.extend(faces)
t1=sys.time()-t0
print t1
print t1/t2 |
Les questions concernant cette page
peuvent être posées sur :
news://news.zoo-logique.org/3D.Blender
|