3D Modelling
This 3D isosurface was created from MRI data, using the following code: USE WINTERACTER IMPLICIT NONE ! INTEGER, PARAMETER :: NX = 200 INTEGER, PARAMETER :: NY = 160 INTEGER, PARAMETER :: NZ = 160 ! CHARACTER(LEN=1) :: cVAL REAL :: VOLDATA(NX,NY,NZ) REAL :: RISOVALUE = 128.0 INTEGER :: NREAD,IHANDLE,NTRI,NVER,NFAC,IX,IY,IZ ! CALL IFileOpen('mri.raw',ReadOnly,IHANDLE) IF (IHANDLE == -1) STOP DO IZ = 1,NZ DO IY = 1,NY DO IX = 1,NX CALL IFileReadChar(IHANDLE,cVAL,1,NREAD) VOLDATA(IX,IY,IZ) = REAL(ICHAR(cVAL)) END DO END DO END DO CALL IFileClose(IHANDLE) CALL WInitialise() NTRI = W3dIsosurfaceCount(VOLDATA,RISOVALUE,0.0,1.0, & 0.0,1.0, & 0.0,1.0) NFAC = NTRI ! single sided facets NVER = NTRI*3 ! three vertices per facet (probably less, since we use vertex sharing) CALL W3dNew(NVER,NFAC) CALL W3dIsosurface(VOLDATA,RISOVALUE,0.0,1.0, & 0.0,1.0, & 0.0,1.0, & Obj3Smooth) CALL W3dSave('mri.w3d') END
|