alex123, может есть писание этих преобразований?вот что получается
import bpyimport mathimport mathutilsdef select(ob): bpy.ops.object.select_name(name=ob.name,extend=True)def join(): bpy.ops.object.join()def activate(ob): bpy.context.scene.objects.active = ob def make_mesh(name): me = bpy.data.meshes.new(name) ob = bpy.data.objects.new(name, me) bpy.context.scene.objects.link(ob) return ob,medef add_data(ob,verts,edges,faces): me = ob.data me.name = ob.name +' mesh' me.from_pydata(verts,edges,faces) me.update()def fface(ds,verts,nx,ny): faces=[] for j in range(ny-1): for i in range(nx-1): n0=(j+0)*nx+(i+0) n1=(j+0)*nx+(i+1) n2=(j+1)*nx+(i+1) n3=(j+1)*nx+(i+0) v02=verts[n0]-verts[n2] v13=verts[n1]-verts[n3] print(v02.length) if(v02.length<ds and v13.length<ds): faces.append([n0,n1,n2,n3]) return facesdef plane(nx,ny): verts=[] for j in range(ny): for i in range(nx): x=(2*i/(nx-1)-1) y=(2*j/(ny-1)-1) v0=mathutils.Vector((x,y,0.0)) verts.append(v0) return vertsdef circle(nx,ny): verts=[] PID2=3.1415/2 for j in range(ny): for i in range(nx): r=i/(nx-1)+PID2*2 a=PID2*4*j/(ny-1) x=r*math.sin(a) y=r*math.cos(a) v0=mathutils.Vector((x,y,0.0)) verts.append(v0) return vertsdef sphere(nx,ny): verts=[] PID2=3.1415/2 for j in range(ny): for i in range(nx): x=(2*i/(nx-1)-1) y=(2*j/(ny-1)-1) #theta=2*x*PID2-PID2 #phi=(y-1)/2*PID2 theta=2*x*PID2+PID2 phi=(y-1)/2*PID2 #theta=PID2+x*PID2 #phi=y*PID2 x=math.cos(phi)*math.cos(theta) y=math.cos(phi)*math.sin(theta) z=math.sin(phi) theta=math.atan2(z,x) phi=math.atan2(math.sqrt(x*x+z*z),y) r=phi/PID2 u=(1+r*math.cos(theta))/2 v=(1+r*math.sin(theta))/2 v0=mathutils.Vector((u,v,0.0)) verts.append(v0) return vertsdef remesh(me,verts): for i in range(len(verts)): me.vertices[i].co=verts[i] def main(): c=250 step=2 if step==1:# verts=plane(c,c)# verts=circle(c,c) verts=sphere(c,c) faces=fface(1/c*10,verts,c,c) edges=[] ob,me=make_mesh('sp') add_data(ob,verts,edges,faces) verts=plane(c,c) remesh(me,verts) else: verts=sphere(c,c) for me in bpy.data.meshes: remesh(me,verts) main()
... если вопрос про картинки которые опубликованы в сообщении http://blender-3d.ru/forum/index.php/topic,414.msg4900.html#msg4900 , тогда последовательность для blender следующая ...
#include "stdosl.h"shader simple(vector Vi = 0, output vector Vo = 0){ float x = Vi[0]; float y = Vi[1]; x = (0.5-x)*2; if(sqrt(x*x+y*y)>1) Vo = vector(0,0,0); else { float pu = 2*x; float pv = 2*y; float pr = sqrt(pu*pu+pv*pv); float a = atan2(pv,pu); float b = pr*M_PI_2; float py = cos(b); float pz = sin(b)*sin(a); float px = sin(b)*cos(a); float theta = atan2(py,px); float phi = atan2(pz,sqrt(px*px+py*py)); y = phi/M_PI_2+1; x = ((theta - M_PI_2)/(M_PI_2*2)+1)/2; Vo = vector(x,y,0); }}
... опиши подробнее, может блендер и не нужен для этой задачи ...
>>скачиваю и вижу впервые в жизни... вот люди делают плагином через
... есть исходное видео для демонстрации на куполе? можно попробовать его конвертировать и далее уже смотреть прогодность этого для практического использования ...
... там ключевое слово - плагин, то бишь можно подсунуть vlc видеофильтр который будет делать под сферическое зеркало ...
... лучше скинуть мувик в последовательность картинок Image sequence (например v00001.jpeg, v00002.jpeg, это делае ffmpeg), далее работать на выходе тоже с последовательность картинок ...... после того как все картинки будут подобраны уже собирать обратно в мувик ...... !!!важно!!! что OSL работает с Cycles, то бишь и материал нужно делать для Cycles ...
... еще по ходу вопрос, а как быть со швами? ...
... но в blender это работает, проверено, только времени требуется чтобы раскадрить, отрендерить и собрать в один мувик ...... есть какой нибудь срок для реализации задачи? ...