[关闭]
@agpwhy 2021-12-10T01:48:15.000000Z 字数 1908 阅读 250

王胖的生信笔记第29期:3D模拟新冠病毒

这周前段时间都在准备给大导师的汇报工作,没有额外考虑写啥内容。就拿前段时间Y叔推荐的另一个和新冠相关的包来水一期。

包的来源和简介

https://github.com/tylermorganwall/coronaobj

这个团队也是之前用R做3D渲染非常牛的团队。R的3D建模来源是来自于National Institute of Allergy and Infectious Diseases (NIAID)。https://3dprint.nih.gov/discover/3dpx-013323

包的配置和安装没什么特殊的。有些地方可能需要自己额外搞一点包,推荐在Windows或Linux上搞,可能省去一些麻烦。

  1. remotes::install_github("tylermorganwall/coronaobj")
  2. remotes::install_github("tylermorganwall/rayrender")

开始渲染

  1. library(coronaobj)
  2. library(rayrender)

基本上就只需要这两个。

然后就画图就行了。下面注意sample,sample取得越高,图片越清晰。按照介绍,这是取样大小,取得越多,波面图也就约精致。

  1. obj_model("defaults.obj", vertex_colors = TRUE) %>%
  2. add_object(sphere(y=10,z=10,x=10, material=light(intensity=100))) %>%
  3. add_object(sphere(y=10,z=10,x=-10, material=light(intensity=100))) %>%
  4. render_scene(parallel=TRUE, samples = 10, fov = 7, min_variance=0, focal_distance = 9.6,
  5. width=800,height=800, filename = "SARS-COV-2.png")

SARS-COV-2

稍微复杂一些

  1. write_corona_obj("custom_color3.obj", color_membrane = "#ed645c",
  2. color_spike = "#a32b24", color_open_spike = "#c91271")
  3. options(cores=36)
  4. generate_ground(depth=-0.55,material = metal(color="darkred", fuzz=0.025)) %>%
  5. add_object(obj_model("custom_color3.obj", vertex_colors = TRUE)) %>%
  6. add_object(obj_model("custom_color3.obj", z=-6,x=0.8,y=0.5, angle=c(0,90,0),vertex_colors = TRUE)) %>%
  7. add_object(obj_model("custom_color3.obj", z=-3,x=-0.5,y=0.2, angle=c(0,180,0), vertex_colors = TRUE)) %>%
  8. add_object(sphere(y=10,x=-10, material=light(color="white",intensity=100))) %>%
  9. add_object(sphere(y=0,x=10, material=light(color="purple",intensity=100))) %>%
  10. render_scene(parallel=TRUE, samples = 1000, focal_distance = 9.6, fov=10,
  11. ambient_light = TRUE, min_variance=0,
  12. backgroundhigh = "black", backgroundlow = "darkred",
  13. aperture=0.2, width=800,height=800, clamp_value=10,filename = "Multi-SARS-COV-2.png")

这里选samples=1000,会花很长时间。我借用了服务器,使用了36cores,也花了好久。

最后出来了就是这个效果。

Multi-SARS-COV-2

还可以搞gif动画。

具体的操作可以参考这个。https://www.tylermw.com/polar-ice-data-in-r-with-rayrender/

需要的计算力太高了(就是做一百多张这样的图片最后黏起来一张张放)最后做出来的话,结果类似这样。

![dynapic.gif-7163.9kB][1]

添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注