[R] R package for reading / writing 3D file (. PLY)

Duncan Murdoch murdoch at stats.uwo.ca
Thu Nov 12 19:22:57 CET 2009


On 11/12/2009 11:37 AM, kvarpun wrote:
> 
> Duncan Murdoch-2 wrote:
>> 
>> On 11/12/2009 4:56 AM, kvarpun wrote:
>>> Hi,
>>> 
>>> Is there an R package that reads and writes 3D images having the
>>> extension
>>> PLY (PLY images of Stanford University)?
>>> 
>>> Currently, I installed the package misc3d. This package displays these
>>> images PLY, but it can neither read nor write PLY images.
>> 
>> This doesn't make sense.  How can it display PLY images if it can't read 
>> them?  Could you give an example?
>> 
>> Duncan Murdoch
>> 
>>> 
>>> Thank you to tell me the name of a package that will read and write such
>>> images.
>> 
>> ______________________________________________
>> R-help at r-project.org mailing list
>> https://stat.ethz.ch/mailman/listinfo/r-help
>> PLEASE do read the posting guide
>> http://www.R-project.org/posting-guide.html
>> and provide commented, minimal, self-contained, reproducible code.
>> 
>> 
> 
> Thank you for quick answer.
> I have to inform you that the only available functions in the package misc3d
> are:
> 
> contour3d                 Draw an Isosurface, a Three Dimension Contour Plot
>   drawScene            Rendering of Triangular Mesh Surface Data
>   image3d                Draw Points on a 3D Grid
>   kde3d                    Compute a Three Dimension Kernel Density Estimate
>   makeTriangles       Triangle Mesh Functions
>   parametric3d          Draw a 3D Parametric Plot
>   perspLighting          Lighting Functions
>   phongLighting         Lighting Functions
>   pointsTetrahedra     Create a Set of Tetrahetra Centered at Data Points
>   scaleTriangles       Triangle Mesh Functions
>   slices3d                 Interactive Image Slices of 3D or 4D Volume Data
>   surfaceTriangles     Create a Triangle Mesh Representing a Surface
>   teapot                    Utah Teapot
>   translateTriangles   Triangle Mesh Functions
>   updateTriangles      Triangle Mesh Functions
> 
> None of them does read/write a PLY file.
> 
> 
> You will find below a simple code for drawing a 3D image. The displayed
> image is stored in the package misc3d (not read from a file). 
> 
> library(misc3d)
> data(teapot)
> 
> haveRGL <- suppressWarnings(require(rgl,quietly=TRUE))
> ttri <- makeTriangles(teapot$vertices, teapot$edges, color = "red", color2 =
> "green")
> 
> ## draw the teapot
> drawScene(ttri,screen=list(y=-30,x=40), scale = FALSE) 
> 
> str(teapot)
> # > str(teapot)
> # List of 2
> # $ vertices: num [1:3, 1:1976] -3,00 1,65 0,00 -2,99 1,65 ...
> # $ edges   : int [1:3, 1:3751] 1455 1469 1459 1449 1455 1459 1462 1449 1459
> 1469 ...
> 
> # My images (PLY images) have vertices and edges like the teapot image in
> the example. If PLY images are read by R, I will be able to manipulate them.

Okay, I understand now.  Yes, R can display 3D images based on lines and 
polygons using the rgl package or scatterplot3d or grid graphics, but 
those have nothing to do with PLY files.  As far as I know there is no 
existing code to read or write a PLY file, but from the look of it, it's 
a simple format and it wouldn't be hard to write input/output routines. 
  The likely problems are:

  - it's an open ended format, with each application allowed to define 
its own record types.  If your files come from an application that did 
that you may have trouble working out what was intended and reading it in.

  - some of the recommended elements are not supported in rgl or other 
3D renderers in R.  In particular, polygons with more than 4 vertices 
need to be decomposed into triangles or quads, and rgl knows nothing 
about refraction index:  you'd probably need a ray-tracing renderer for 
that.

  - rgl scenes contain text, and as far as I can see, there's no way to 
include that in a standard PLY file, so you'd need to invent your own 
record type for it.  Text is always hard to describe graphically, so 
this wouldn't be easy.

Duncan Murdoch




More information about the R-help mailing list