Upload
maria-bostenaru
View
67
Download
0
Embed Size (px)
DESCRIPTION
Stereo 3D
Citation preview
STEREO 3D APPLICATIONS POTENTIAL FOR HERITAGE DISASTER MANAGEMENT
Maria BOSTENARU DAN
Introduction
Human viewing in 3D through stereo images Pairs of images / colours 3D photography
Disaster management Heritage conservation – 3D images (incl. Puzzles)
Reconstruction of antique sites superposed to real photo
In this paper: Adobe (Macromedia) Director application Potential for augmented reality (superpose 3D
model and photograph)
Historical and now
Research on stereo photography
3D photography
historic Canadian Centre for Architecture
1866 fire in Portland, Maine – J. Soule Giorgio Sommer Evora
DDR Now
Castles in Hungary
Canadian Centre for Architecture
Canadian Centre for Architecture
Photographer Siever
CCA
Fire Boston 1873
Photographer Soule John
CCA
Fire Portland (Maine) 1866
wikipedia
Giorgio Sommer Vesuvius 26 April 1872
wikipedia
Giorgio Sommer Vesuvius
wikipedia
Giorgio Sommer Pompei
Evora disaparecida
http://www.varak3d.hu/
Várak 3D
Photo.net
Projection of stereo in an installation
Rediscovered space
Rediscovered space
Rediscovered space
Satellite imagery
2001 Gujarat earthquake – M. Markus (comparison with eye view)
L‘Aquila (our research) 2010 Haiti – stereo pairs (Langenbach)
Foto 2003, 2010
Plan: Protecţia Civilă Italiană
L‘Aquila
Stereo pairs 2010
http://www.conservationtech.com/
Pictometry images
3D application programming
Programming
Lingo script, openGL basis Of a geometric model which we also
built in paper (rhombicuboctaedron)
member(1).newCamera("axonometrie") (member 1 of castLib 1).Camera(2).translate(0, 0, 100, #world) member(1).camera(2).rotate(45, 0, -135, #world) member(1).newCamera("camera2") (member 1 of castLib 1).Camera(3).translate(0, 0, 100, #world) member(1).camera(3).rotate(45, 0, -135, #world) member(1).camera(3).translate(20, 0, 0, #world)
on enterFrame global l member(1).resetWorld() member(1).bgcolor=rgb(0,0,255) l=20 mymeshgeometry = member(1).newMesh("rhombicuboctaedron", 44, 24, 0, 4) tmpvertlist=[] tmpvertlist.add( vector(l/2,l/2,(l/2+l*cos(PI/4))) ) tmpvertlist.add( vector(-l/2,l/2,(l/2+l*cos(PI/4))) ) tmpvertlist.add( vector(l/2,-l/2,(l/2+l*cos(PI/4))) ) tmpvertlist.add( vector(-l/2,-l/2,(l/2+l*cos(PI/4))) ) tmpvertlist.add( vector(l/2,l/2,-(l/2+l*cos(PI/4))) ) tmpvertlist.add( vector(-l/2,l/2,-(l/2+l*cos(PI/4))) ) tmpvertlist.add( vector(l/2,-l/2,-(l/2+l*cos(PI/4))) ) tmpvertlist.add( vector(-l/2,-l/2,-(l/2+l*cos(PI/4))) )
mymeshgeometry.vertexlist=tmpvertlist mymeshgeometry.colorList=[ rgb(255,255,255), rgb(0,255,255) , rgb(255,0,0), rgb(0,0,255)] mymeshgeometry.face[1].vertices=[1,3,2] mymeshgeometry.face[1].colors=[1,1,1] mymeshgeometry.face[2].vertices=[4,2,3] mymeshgeometry.face[2].colors=[1,1,1] mymeshgeometry.face[3].vertices=[2,4,17] mymeshgeometry.face[42].colors=[1,1,1] mymeshgeometry.face[43].vertices=[6,8,5] mymeshgeometry.face[43].colors=[1,1,1] mymeshgeometry.face[44].vertices=[5,8,7] mymeshgeometry.face[44].colors=[1,1,1] mymeshgeometry.generateNormals(#flat) mymeshgeometry.build() mymeshl = member(1).newModel("meshlinks", mymeshgeometry) (member 1 of castLib 1).Model[1].visibility = #both mymeshgeometryx = member(1).newMesh("tetraedru", 4, 4, 0, 1, 1)
myboxgeometry = member(1).newModelResource("cub", #box) myboxgeometry.width = l myboxgeometry.length = l myboxgeometry.height = l mybox = member(1).newModel("cube", myboxgeometry) myboxtexture = member(1).newTexture("cubetexture", #fromCastMember, member("bitmap")) (member 1 of castLib 1).newShader("rot",#standard) (member 1 of castLib 1).Shader[2].textureList[1] = (member 1 of castLib 1).texture[3] (member 1 of castLib 1).Model[3].shaderList = (member 1 of castLib 1).shader[2] member(1).model[3].translate(0, 0, (2*(l+l*cos(PI/4))) , #world) mymeshgeometryz = member(1).newMesh("tetraedruz", 4, 4, 0, 1, 1) mymeshgeometryz.vertexList=[vector(-((l/2)*cos(PI/4)),-((l/2)*cos(PI/4)),-((l/2)*cos(PI/4))),vector(-((l/2)*cos(PI/4)),((l/2)*cos(PI/4)),((l/2)*cos(PI/4))),vector(((l/2)*cos(PI/4)),-((l/2)*cos(PI/4)),((l/2)*cos(PI/4))),vector(((l/2)*cos(PI/4)),((l/2)*cos(PI/4)),-((l/2)*cos(PI/4)))] mymeshgeometryz.colorList=[rgb(255,0,0)] mymeshgeometryz.face[1].vertices=[1,3,2] mymeshgeometryz.face[2].vertices=[2,3,4] mymeshgeometryz.face[3].vertices=[1,2,4] mymeshgeometryz.face[4].vertices=[1,4,3] mymeshgeometryz.face[1].colors=[1,1,1] mymeshgeometryz.face[2].colors=[1,1,1] mymeshgeometryz.face[3].colors=[1,1,1] mymeshgeometryz.face[4].colors=[1,1,1] mymeshgeometryz.generateNormals(#flat) mymeshgeometryz.build() mymeshx = member(1).newModel("tetraederz", mymeshgeometryz) (member 1 of castLib 1).Model[4].visibility = #both member(1).model[4].translate(0, 0, (3*(l+l*cos(PI/4))), #world)
mymeshgeometryx.vertexList=[vector(((l/2)*cos(PI/4)),((l/2)*cos(PI/4)),((l/2)*cos(PI/4))),vector(((l/2)*cos(PI/4)),-((l/2)*cos(PI/4)),-((l/2)*cos(PI/4))),vector(-((l/2)*cos(PI/4)),((l/2)*cos(PI/4)),-((l/2)*cos(PI/4))),vector(-((l/2)*cos(PI/4)),-((l/2)*cos(PI/4)),((l/2)*cos(PI/4)))] mymeshgeometryx.colorList=[rgb(255,0,0)] mymeshgeometryx.face[1].vertices=[1,3,2] mymeshgeometryx.face[2].vertices=[2,3,4] mymeshgeometryx.face[3].vertices=[1,2,4] mymeshgeometryx.face[4].vertices=[1,4,3] mymeshgeometryx.face[1].colors=[1,1,1] mymeshgeometryx.face[2].colors=[1,1,1] mymeshgeometryx.face[3].colors=[1,1,1] mymeshgeometryx.face[4].colors=[1,1,1] mymeshgeometryx.generateNormals(#flat) mymeshgeometryx.build() mymeshx = member(1).newModel("tetraeder", mymeshgeometryx) (member 1 of castLib 1).Model[2].visibility = #both member(1).model[2].translate(0, 0, (l+l*cos(PI/4)), #world)
particleresource=member(1).newModelResource("particles",#particle) particleresource.emitter.minSpeed = 40 particleresource.emitter.maxSpeed = 50 particleresource.emitter.numParticles = 350 particleresource.emitter.tweenMode = #age particleresource.emitter.angle = 90 particleresource.emitter.direction = vector(0.000, -150.000, 0.000 ) particleresource.emitter.region = [vector(-50.000, 0.000, -50.000 ), vector(50.000, 0.000, -50.000 ), vector(50.000, 0.000, 50.000 ), vector(-50.000, 0.000, 50.000 ) ] particleresource.wind = vector(1.000, -50.000, 50.000 ) particleresource.lifeTime = 5000 particleresource.colorRange.start = rgb(0, 255, 255) particleresource.colorRange.end = rgb(255, 255, 255) particleresource.sizeRange.start = 12 particleresource.sizeRange.end = 6 particleresource.blendRange.start = 25 particleresource.blendRange.end = 100 t = member(1).newTexture("tparticle", #fromCastMember, member "particle")t.quality =#lowt.renderFormat = #rgba4444particleresource.texture = t member(1).camera(1).addChild(member(1).newModel("particles1", particleresource)) member(1).camera(1).addChild(member(1).newModel("particles2", particleresource)) member(1).model("particles2").rotate(0,0,180,#parent)endcreate world
sprite(1).camera=member(1).camera("axonometrie")
sprite(2).camera=member(1).camera("camera2")
member(1).model[3].rotate(0, 90, 0, member(1).model[1])
end
Outlook
Stereo images – illusion of 3D Potential not fully used Like in reconstruction on CD in the last
decade, translation from paper into computer application of augmented reality
Rediscovered space
Rediscovered space
Rediscovered space
Rediscovered space
Rediscovered space
Rediscovered space
Rediscovered space
Rediscovered space
Rediscovered space
Student exercise site
Augmented reality
Leebmann 2002
Augmented reality – photo & modell superposition
Leebmann 2004
Superposition of video, laser-scanning and CAD simulation
Potential application
Archeologic reconstruction
Granada 3D Troia 3D
Director
Now and then photography
Rezistenta.net Langenbach (Piranesi) San Francisco 1906 (Arnold Genthe) Indian Mutiny (Felice Beato)
Thank you!