当前位置:首页 » 休闲服饰 » 如何制作骷髅骨架t恤
扩展阅读
女装新款秋冬长裙 2025-01-27 11:14:33
女装风衣外套批发 2025-01-27 11:03:42

如何制作骷髅骨架t恤

发布时间: 2022-09-18 11:05:41

1. 整幅唐卡是一个骷髅骨架是什么唐卡

只有一具骷髅架吗?


一般来说画的是一男一女的骷髅架,那是尸陀林主,尸陀林主的介绍参考以下


尸林怙主,即尸陀林主,又称“墓葬主”。是本尊胜乐及空行母的不共护法。因此一般我们会在护法的唐卡上方看到胜乐像,以及在胜乐或者空行母唐卡下方看到尸林护法像。

在密续中说,降伏三界者大殊胜嘿如嘎(胜乐)本尊发出“嗡……”咒音后,惊昏了世间一切生灵。当众生苏醒时,便看到显现出尸林怙主夫妇的形象。

据说尸林怙主夫妇居住在髑髅山,那里有四方形的人头骨城,骨城有尸林髑髅宫殿和莲华日轮座,座垫上拥立着尸林怙主夫妇。尸

林怙主夫妇的形象极为阴森恐怖,是两具没有血肉的完整人体骨架,全身白色,一面二臂,右手高举人头骨棒,左手承托盛满鲜血的颅器,分别踏立在莲花日月轮垫上的海螺和贝壳上面,作舞姿状。

尸林怙主的髑髅身表义空性,人头骨棒表义摧灭嗔恚心,盛血颅器表义饮魔敌血、五骷髅顶饰表义出生一切悉地成就。总之,尸林怙主幻化多变,与其眷属,护持佛法事业。

最好能提供照片看看会更准备一些

2. T恤袖子上印两个骷髅头

现在很多个性T恤印花小店都可以引啊,在卖衣服集中的地方一般都有这样的小店的。如果想要炫一点的话可以在网上买那种烫钻图,闪亮亮的,很好看

3. 求魔兽世界修骷髅药改成未和谐之前的骨架骷髅的修改,本人新手,麻烦给个操作流程简单的答案,谢谢!!

有一个相当简单的方法,就是安装台湾版本的3.03,然后WOW.EXE,和launch.EXE备份后把国服的WOW.EXE文件和launch.EXE和realmlist覆盖过来运行。

繁体的,但是纯官方,不怕任何安全隐患。

等将来网易接手之后,如果版本号变了,就借品朋友的上述三个文件来覆盖现有的就可以了。

另外,需要在根目录建立一个FONT文件夹,详细可以参考X-only点NET里面的魔兽文字帖。(不然会乱码或者无法显示简体字)

==============

傻瓜方法,就真的是猫扑里面的了,不过这个对初哥来说有些难度吧~好像还不是全部免合邪的。

4. 在一家护肤品店里看到骷髅骨架

必须是科颜氏,Kiehls,那是他家的骨头先生

5. 如何把自己瘦成骷髅骨架的身材

如果把自己瘦成骷髅骨架的身材,为什么要瘦成这样呢?这样对自己身体非常,嗯,有害的不健康的瘦。并不好啊,没有抵抗力。还是不要。有这种想法的好。

6. 如何做人体骨架模型

本文提供一种将骨架动作矢量映射到人体骨架模型的一种方法,通过输入各个骨骼的当前方向,反馈给骨架模型,这样就实现了动画的效果。实验开发工具是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[80]; //名称
char file_name_3ds[180]; //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://scourge.sourceforge.net
http://scourge.sourceforge.net/api/3ds_8h-source.html
实际上在使用这个类时候,我做了一些修改,加了得到最大顶点的方法。这个在第五步会说明。

我们定义一个OpenGL的类来做模型控制类,负责载入模型,

CLoad3DS* m_3ds;

int OpenGL::Load3DS(int ID, char *filename)
{
if(m_3ds!=NULL) m_3ds->Init(filename,ID);
return 0;
}

然后在显示时候调用

int OpenGL::show3ds(int ID)
{
m_3ds->show3ds(ID,0,0,0,2);
return 0;
}

第五步,使用递归方法分层次载入模型

这里是重点的内容了,让我们思考一些问题,实现骨骼会随着输入的方向而改变方向,需要做那些事情呢?

首先针对一块骨骼来考虑:

第一,我们需要让骨骼绕着它的节点旋转到输入的方向上

第二,我们需要知道骨骼目前节点的位置,才能旋转。可是我们知道骨骼会跟着它的父骨骼转动的,例如左小臂会跟着左臂转动,当身体转动时左臂也会跟着身体转动的,这里看起来像是有一个父子连动的关系,所以当前节点的位置会与它的父骨骼有关,父骨骼转动的角度,子骨骼也必须转动,所以这里自然想到了递归模型了,至于如何存储这些转动过程呢,还好openGL提供了glPushMatrix();glPopMatrix();那么所有的子骨骼必须包含在父骨骼的glPushMatrix();glPopMatrix();好了,这个变成

//递归实现3d现实
int skelecton::Render_skeleton_3D(int ID)
{

glPushMatrix(); //开始记录堆栈
joint_point = pgl->get_joint_point(ID); //找到节点位置
glTranslatef(joint_point.x,joint_point.y,joint_point.z); //坐标移到节点位置
pgl->rotate_bone (vt1,vt2,vto); //旋转骨骼到指定的方向
glTranslatef(-joint_point.x,-joint_point.y,-joint_point.z);//坐标移回来
pgl->show3ds(ID); //显示模型

//遍历子节点
for (theIterator = bonevec.begin(); theIterator != bonevec.end(); theIterator++)
{
pbone = theIterator;
if((pbone->PID == ID) )
{
Render_skeleton_3D(pbone->ID); //递归调用
}
}

glPopMatrix(); //退出记录堆栈
}

剩下需要解决的问题就是如何找到节点位置。
寻找节点位置,我们看到上面代码 get_joint_point(ID)就是找到节点了,其实如果不追求高的准确度,我们可以假设每个模型的最高的点即为骨骼的节点,当然这个假设前提是人体模型是正面站立的,手臂自然垂下,这样可以近似认为每个模型的最高的点即为骨骼的节点,这样函数就很简单了,这个方法是修改了Cload3ds类的方法,如下:

Vector3f CLoad3DS::get_joint_point(int j0)
{
CVector3 LastPoint;
Vector3f vect;
LastPoint.y = -1000 ;
if(j0==2) LastPoint.y = 1000 ;//头部节点朝下

// 遍历模型中所有的对象
for(int l = 0; l < g_3DModel[j0].numOfObjects; l++)
{
if(g_3DModel[j0].pObject.size() <= 0) break;// 如果对象的大小小于0,则退出
t3DObject *pObject = &g_3DModel[j0].pObject[l];// 获得当前显示的对象

for(int j = 0; j < pObject->numOfFaces; j++) // 遍历所有的面
{
for(int tex = 0; tex < 3; tex++) // 遍历三角形的所有点
{
int index = pObject->pFaces[j].vertIndex[tex]; // 获得面对每个点的索引

if(j0==2)
{
if(pObject->pVerts[index].y < LastPoint.y )
LastPoint = pObject->pVerts[index];
}
else
{
if(pObject->pVerts[index].y > LastPoint.y )
LastPoint = pObject->pVerts[index];
}
}
}
}
vect.x = LastPoint.x ;
vect.y = LastPoint.y ;
vect.z = LastPoint.z ;
return vect;
}

比较特殊的是头部节点是通过脖子连接的,所以它是取最低的点。

现在解决最后的问题了,如何旋转了,具体来讲就是骨骼从原来自然的状态旋转到目前的方向,例如手臂从自然垂下变成抬起,垂下和抬起两个状态的矢量是不同的方向的,如何旋转呢? 这里就要用到了空间几何里的点积和叉积的概念了,简单来讲就是利用点积来求矢量夹角余弦,利用叉积来求两个矢量的法向量,如果你忘记了这些概念,可以回去参考一下高等数学书,这个连接也提供了一些资料,可以帮助理解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 = 180*arc12/pi;
float len= Distance(vt1,vt2);
Vector3f vt3 = Cross(vVectorOrgin,vt4);
glRotatef ((float)rarc12,vt3.x,vt3.y,vt3.z);

return 0;
}

7. 谁给我一个WOW(除国服)没有被和谐前的亡灵骷髅造型

魔兽中国记者:关于有中国特色的魔兽世界让我们中国的玩家已经玩习惯了,但在巫妖王中
,主要都是亡灵生物,大量的不死怪物,骷髅,憎恶等不和谐的东西这次会如何处理?
...

8. 密室逃脱骷髅骨架是真的吗

假的。密室逃脱使用的骷髅骨架是通过购买来装饰密室中恐怖紧张氛围的。密室逃脱的骷髅骨架是由石灰和树脂制作得仿真骷髅骨架,所以密室逃脱骷髅骨架是假的。

9. 为什么有很多带有骷髅图案的衣服受很多人追捧,而且价格不菲

骷髅图案也是一种文化需求。大家都知道,在现代社会里,骷髅头图案是时尚爱好者的流行标签,度娘告诉我,20世纪70年代的伦敦,是以朋克为代表的反主流文化盛行的年代,Malcolm McLaren 和他的女友Vivienne Westwood推出了一些列以骷髅头为灵感的朋克服饰,备受年轻人的追捧,当然价格也不菲了。

骷髅T恤,你要穿吗?大多数追风少年还是喜欢穿骷髅头服装的,因为青春骚动的心喜欢酷酷的样子,你说呢?

10. 亡灵巫师机器人配方

1、骷髅盗贼:

头:骷髅头

手臂1:带军刀的骷髅手臂

手臂2:带军刀的骷髅手臂

胸部:骨骼身体

腿1:骨骼腿

腿2:骨架腿

2、骷髅赏金猎人:

头:骷髅头

手臂1:带军刀的骷髅手臂

手臂2:带弩的骷髅手臂

胸部:骨骼身体

腿1:骨骼腿

腿2:骨架腿

3、杂种兽人骨骼:

头:骷髅头

手臂1:带盾牌的骷髅手臂

手臂2:带盾牌的骷髅手臂

胸部:兽人骷髅身体

腿1:带靴子的骨架腿

腿2:带靴子的骨架腿

4、僵尸突变体:

头:僵尸头

手臂1:带剑的僵尸手臂

手臂2:带狼牙棒的僵尸手臂

胸部:僵尸身体

腿1:僵尸腿

腿2:僵尸腿

5、哈佩:

负责人:哈佩·海德

手臂1:哈佩之翼

手臂2:哈佩之翼

胸部:哈佩身体

第一站:哈佩站

第二站:哈佩站

6、女妖:

负责人:哈佩·海德

手臂1:哈佩之翼

手臂2:哈佩之翼

胸部:吸血鬼的身体

腿1:吸血鬼腿

腿2:吸血鬼腿

7、蜥蜴战士:

头:蜥蜴头

手臂1:带圆盘的蜥蜴手臂

手臂2:带矛的蜥蜴手臂

胸部:蜥蜴身体

腿1:蜥蜴腿

腿2:蜥蜴腿

8、奥林匹亚蜥蜴:

头:蜥蜴头

手臂1:带圆盘的蜥蜴手臂

手臂2:带圆盘的蜥蜴手臂

胸部:蜥蜴身体

腿1:蜥蜴腿

腿2:蜥蜴腿

9、螳螂:

头:螳螂头

手臂1:螳螂臂

手臂2:螳螂臂

胸部:螳螂身体

腿1:螳螂腿

腿2:螳螂腿

10、杂种兽人:

头:僵尸头

手臂1:带剑的僵尸手臂

手臂2:带剑的僵尸手臂

胸部:兽人身体

腿1:僵尸腿

腿2:僵尸腿

11、骷髅法师保镖:

头:骷髅头

手臂1:带魔杖的骷髅手臂

手臂2:带盾牌的骷髅手臂

胸部:骨骼躯干

腿1:骨骼腿

腿2:骨架腿

12、骷髅兽人斧兵:

头部:兽人骷髅头

手臂1:兽人骷髅手臂,带投掷斧

手臂2:兽人骷髅手臂,带投掷斧

胸部:兽人骨骼躯干

腿1:兽人骷髅腿

腿2:兽人骷髅腿

13、骷髅兽人狂战士:

头部:带头盔的兽人骷髅头

手臂1:装备盔甲和投掷斧的兽人骷髅手臂

手臂2:兽人骷髅装备盔甲和投掷斧

胸部:兽人骨骼躯干和盔甲

腿1:带靴子的兽人骷髅腿

腿2:带靴子的兽人骷髅腿

14、班特林矮子骨架:

头部:兽人骷髅头

手臂1:兽人骷髅手臂,带狼牙棒

手臂2:兽人骷髅手臂配狼牙棒

胸部:兽人骨骼躯干

腿1:僵尸腿

腿2:僵尸腿

15、哈佩战士:

头:哈佩带盔甲的头

手臂1:有钢铁羽毛的哈佩翅膀

手臂2:有钢铁羽毛的哈佩翅膀

胸部:哈佩身上带着盔甲

腿1:有钢爪的哈佩腿

第二条腿:带着钢爪的哈佩腿

16、假人战士:

头部:钢假人头

手臂1:钢假人手臂与蒸汽锯

臂2:带蒸汽枪的钢假人臂

胸部:钢假人身体

腿1:钢假人腿

腿2:钢假人腿

17、假人战斗机:

头部:钢假人头

臂1:钢假人臂,带蒸汽枪

臂2:带蒸汽枪的钢假人臂

胸部:钢假人身体

腿1:钢假人腿

腿2:钢假人腿

18、吸血鬼:

头:吸血鬼头

手臂1:吸血鬼手臂

手臂2:吸血鬼手臂

胸部:吸血鬼的身体

腿1:吸血鬼腿

腿2:吸血鬼腿