Render.ru

Помогите ускорить считывание данных с геометрии.

Александр Якушев

Активный участник
Рейтинг
7
#1
Код:
start1 = timestamp()   
obj =  snapshotasmesh (Sphere radius:100 segs:200 pos:[0,0,0])
ObjNumFaces = obj.numfaces
arrayMeshData = #()  --index face, normal, face area, center face

--zapishem dannie v massivy
for f = 1 to ObjNumFaces do
(
    VertUseFaces = getFace obj f
    arVert =  #(getVert obj VertUseFaces[1], getVert obj VertUseFaces[2], getVert obj VertUseFaces[3])
    append arrayMeshData #(getFaceNormal obj f, meshop.getFaceArea obj f, meshop.getFaceCenter obj f, arVert)
    )
delete obj
end1 = timestamp()
format "changecones() took % seconds\n" ((end1-start1)/1000.0)

На выходе должен быть массив данных arrayMeshData.
У меня получается changecones() took 6.548 seconds.
 

igorznag

Мастер
Рейтинг
103
#2
Код:
start1 = timestamp()
obj =  snapshotasmesh (Sphere radius:100 segs:200 pos:[0,0,0])
ObjNumFaces = obj.numfaces
arrayMeshData = #()  --index face, normal, face area, center face

--zapishem dannie v massivy
for f = 1 to ObjNumFaces do
(
    VertUseFaces = getFace obj f
    v1=getVert obj VertUseFaces[1]; v2=getVert obj VertUseFaces[2]; v3=getVert obj VertUseFaces[3];
    arVert =  #(v1,v2,v3)
    a=length(v2-v1); b=length(v3-v1); c=length(v3-v2);
    s=(a+b+c)/2.0; s=s*(s-a)*(s-b)*(s-c); fa=pow s 0.5
    append arrayMeshData #(getFaceNormal obj f, fa, meshop.getFaceCenter obj f, arVert)
    )
delete obj
end1 = timestamp()
format "changecones() took % seconds\n" ((end1-start1)/1000.0)
 
Сверху