当前位置:主页 > 生活知识 >

人体模型制作(3Dmax如果制作人体建模)

  • 生活知识
  • 2023-05-22
  • www.shiguanyingerw.cn
  • 生活知识

3Dmax如果制作人体建模

3dmax如何做人物建模步骤如下

1、先把人体看作方块,如画圆的时候,不是用圆规,而是先画一个正方形,在用更多的切线切成一个圆,原来的边角就变成了平滑的曲线了。

2、必须了解人体结构。人的结构大部分是靠骨骼来撑起来的,所以你必须先了解一下骨骼和在人体上所能看到的骨点。

3、有了基本的结构,你就要开始了解各个部位之间的关系和变化,这就要了解肌肉的走向了,因为骨头只是一副架子,真正呈现在外面所能看到的大部分变化都是由肌肉来决定。所以了解一下肌肉是必须的。

4、知道了结构和各个起伏,通俗易懂的说法就说形状吧,然后你可以像建其他简单模型一样尝试建模,建好之后不管怎么样,只要像就可以了,接着你就参考别人的布线图,看看人家为什么是这样分布来修改你不合理的地方。

5、就是赋予材质了。

这样就解决了3dmax如何做人物建模的问题。

有谁知道解剖模型是如何制造的吗哪位朋友可以说一下

有谁知道解剖模型是如何制造的吗?哪位朋友可以说一下?你知道吗?最早的解剖模型源于18世纪,主要是用蜡像做成,并且应用在教育领域,现在则主要用塑料树脂制作,常见的一般在医学院或者医生的办公室。

第一、人体解剖模型,简单来说,是指对人体内部器官作直观解剖的模型,形象逼真地展示出各人体器官的内部构造。便于在医学教学中使学生直观的查看人体的构造进行学习。人体解剖模型一般由20多个部分组成,包含了人体内部的诸多构造,每个部件都是用粘膜浇灌塑料树脂做成的,在225摄氏度的烤箱中摇晃粘膜,使塑料树脂充分分布在粘膜表面,十分钟后取出粘膜进行冷却。取出来的塑料树脂模型不管是手臂、心脏还是腿部等部件都需要进行穿孔,从而保证内部空气得到释放。然后是打出可以固定的小孔。

第二、接下来每个组件都需要进行上色,不管是指甲还是血管,都有对应的颜色,比如红色代表动脉,蓝色代表静脉,黄色代表神经,眼睛是黑白色,画眼睛很需要考验化湿的技术,要让眼睛显得栩栩如生。接下来是整体的组装,将金属插销插入每一个部件,然后放入烘箱15分钟,软化材料树脂,这样做是为了更好的安装。

第三、先将模型头部装在身体上,再将脑部放入模型头骨中,然后是给手臂装上肌肉,也装上可以伸缩的二头肌,再就是三角肌,完成后用胶带固定,再把手臂安装在身体上,并用镀镍沟固定。,这样一个由20多个部件,45个独立组件且完全符合人体解剖学的人体解剖模型就制作好了。

如何做人体骨架模型


  本文提供一种将骨架动作矢量映射到人体骨架模型的一种方法,通过输入各个骨骼的当前方向,反馈给骨架模型,这样就实现了动画的效果。实验开发工具是VC6.0在OpenGL平台上开发完成。
  阅读对象
  假定读者已经熟悉OpenGL编程,就算不熟悉,只要了解基本的旋转,平移,堆栈操作就好。
  假定读者已经了解基本的c++编程,其中需要了解递归的算法,递归的方法请参考一下数据结构吧。
  制作过程
  第一步,3D模型准备
  这一步骤的目的是提供分解的骨骼模型,它需要导出多个组成身体结构的文件,模型可以不用自己制作,只要到网上找找吧,应该很多,最好是是人体模型,如果用动物的模型也可以,不过需要自己定义映射骨架了,比如图中的骷髅模型是我从人体动画软件poser 5.0找到的。然后使用3d max 将身体的各个部位导出为3ds文件,这个步骤很简单,也不需要有什么3d max的基础。这里有一个小的技巧就是可以选中多个部分作为一个3ds模型导出,比如我需要将左右肩胛骨与脊椎骨肋骨作为同一个部分导出,这样可以将它命名为身体躯干(body)。这样我们就准备了各个3ds文件了,分别是:
  身体躯干 BODY.3DS
  头部 HEAD.3DS
  左臂 LSHOULDER.3DS
  右臂 RSHOULDER.3DS
  左小臂 LELBOW.3DS
  右小臂 RELBOW.3DS
  左大腿 LTHIGH.3DS
  右大腿 RTHIGH.3DS
  左小腿 LFEET.3DS
  右小腿 RFEET.3DS
  这样这些组成部分就可以灵活的拼接出一个人体来了。
  第二步,定义相关的核心数据结构
  为了得到运动的各个身体部分数据信息,我们需要存储一些运动信息,主要有
  骨骼ID
  骨骼关节的当前位置;r_x,r_y,r_z
  骨骼之间的关系,例如手臂是躯干的延伸,而左小臂是左臂的延伸;PID,CID
  我们可以通过下图来了解骨骼之间的结构关系
  存放3ds文件位置;file_name_3ds
  3ds模型的初始化方向;这个是比较抽象一点的概念,它是指从父节点指向子节点的方向,例如左小臂的初始位置是平放向下,那么对应的矢量就是 (-0.2,-1,0)
  以下是数据结构部分:
  class bone
  {
  public:
  int y;
  int x;
  int r_z; //现实世界z坐标
  int r_y;
  int r_x;
  int rotated_X; //旋转后的坐标
  int rotated_Y;
  int is_marked; //是否已经标记
  int PID; //父节点
  int CID; //子节点,目前针对轴关节和膝盖有效
  float start_arc_x,end_arc_x; //相对父节点的x 左右方向转动角度限制
  float start_arc_y,end_arc_y; //相对父节点的y 上下方向转动角度限制
  float start_arc_z,end_arc_z; //相对父节点的z 前后方向转动角度限制
  double LengthRatio;
  char name; //名称
  char file_name_3ds; //3ds文件名称
  int ID;
  bone(int ID,char name,int PID);
  virtual ~bone();
  float bone_init_x,bone_init_y,bone_init_z; //初始化骨骼的矢量方向,3d max 模型
  };
  第三步,初始化骨架结构
  在定义了bone的结构以后,我们定义一个skeleton类来在第一次初始化时加载这些结构,
  obone = bone (2,“head“,1); //定义一个bone
  strcpy(obone.file_name_3ds,“head.3DS“); //设置它的3ds文件名
  obone.bone_init_x = 0; //初始化骨骼的矢量方向
  obone.bone_init_y = 1;
  obone.bone_init_z = 0;
  bonevec.push_back (obone); //放入vector结构,这里用到了STL编程技术中的vector
  以下是实现的部分代码
  skelecton::skelecton()
  {
  float fy = 0.56f ;
  float ftx = 0.19f;
  float ffx = 0.08f;
  bone obone = bone (1,“neck“,0);
  bonevec.push_back (obone);
  obone = bone (2,“head“,1);
  strcpy(obone.file_name_3ds,“head.3DS“);
  obone.bone_init_x = 0;
  obone.bone_init_y = 1;
  obone.bone_init_z = 0;
  bonevec.push_back (obone);
  obone = bone (3,“rShoulder“,1);
  bonevec.push_back (obone);
  obone = bone (4,“lShoulder“,1);
  bonevec.push_back (obone);
  obone = bone (5,“rElbow“,3);
  strcpy(obone.file_name_3ds,“rShoulder.3DS“);
  obone.bone_init_x = fy;
  obone.bone_init_y = -1;
  obone.bone_init_z = 0;
  obone.CID = 7;
  bonevec.push_back (obone);
  obone = bone (6,“lElbow“,4);
  strcpy(obone.file_name_3ds,“lShoulder.3DS“);
  obone.bone_init_x = -fy;
  obone.bone_init_y = -1;
  obone.bone_init_z = 0;
  obone.CID = 8;
  bonevec.push_back (obone);
  //.............太长只给出部分的代码..........................
  }
  第四步,学习3ds公共的类CLoad3DS,可以用来载入显示模型
  这个类是公用一个类,详细的类CLoad3DS的接口信息可以到一个open source项目里参考。
  现在解决的问题了,如何旋转了,具体来讲就是骨骼从原来自然的状态旋转到目前的方向,例如手臂从自然垂下变成抬起,垂下和抬起两个状态的矢量是不同的方向的,如何旋转呢? 这里就要用到了空间几何里的点积和叉积的概念了,简单来讲就是利用点积来求矢量夹角余弦,利用叉积来求两个矢量的法向量,如果你忘记了这些概念,可以回去参考一下高等数学书,这个连接也提供了一些资料,可以帮助理解http://www.gameres.com/Articles/Program/Visual/Other/shiliang.htm
  然后呢,我们知道了两个矢量的夹角与它们的法向量,下面的事情就变得简单了,我们让骨骼原来的矢量以法向量为旋转轴,旋转一定角度,这个角度就是两个矢量的夹角,这样问题就解决了,所以这里的代码如下
  int OpenGL::rotate_bone(Vector3f vVector1, Vector3f vVector2, Vector3f vVectorOrgin)
  {
  Vector3f vt1 = Vector3f(vVector1.x,vVector1.y,vVector1.z);
  Vector3f vt2 = Vector3f(vVector2.x,vVector2.y,vVector2.z);
  Vector3f vt4 = vt2-vt1;
  double arc12 = AngleBetweenVectors(vVectorOrgin,vt4);
  double rarc12 = 180arc12/pi;
  float len= Distance(vt1,vt2);
  Vector3f vt3 = Cross(vVectorOrgin,vt4);
  glRotatef ((float)rarc12,vt3.x,vt3.y,vt3.z);
  return 0;
  }

用UG怎样建立人体模型

在UG软件中利用创建人体模型命令即可建立人体模型,具体操作请参照以下步骤,演示软件版本为UG10.0。

1、在电脑上打开UG10.0软件,新建一个模型文件,使软件进入到三维建模工作界面。

2、然后依次执行【菜单】-【工具】-【人体建模】-【人体】,如图所示。

3、接着就会出现下图所示的“人体”操作界面,这些数据可以选择默认值,点击确定即可。

4、然后点击“正三轴测图”的工作图标,来调整视角。

5、完成以上设置后,即可用UG建立人体模型。

人工授精




微信公众号