OpenGL_Qt教程

OpenGL_Qt教程
OpenGL_Qt教程

Qt OpenGL教程

最近一段时间除了学习Qt,翻译Qt文档之外,由于工作和兴趣的原因,开始着手看Qt OpenGL编程。在网上搜索了有关OpenGL的教程,发现NeHe的OpenGL 教程的还很不错,作者是NeHe。上面有很多种语言的实现,但是没有Qt和Gtk 的,所以我就想着手写这个Qt OpenGL教程,每课的内容和NeHe是一样的。另外,介绍NeHe的一个中文翻译站点CSDN-CKer翻译的NeHe的OpenGL教程,翻译人是CKer,在我学习这个教程的过程中,给了我很大的帮助。

下面就是Qt OpenGL教程的内容:

Qt OpenGL的准备工作

第一课:创建一个OpenGL窗口

第二课:你的第一个多边形

第三课:上色

第四课:旋转

第五课:向三维进军

第六课:纹理映射

第七课:纹理滤波、光源和键盘控制

第八课:融合

第九课:在三维空间中移动位图

第十课:载入一个三维世界并在其中移动

第十一课:旗的效果(波动纹理)

第十二课:显示列表

第十三课:位图字体

第十四课:轮廓字体

第十五课:使用纹理映射的轮廓字体

第十六课:看起来很棒的雾

因为本教程是从NeHe的OpenGL教程迁移过来的,代码变为Qt实现的。所以有的课程一时还没有实现成功,所以可能有些教程是跳跃的。

因本人时间有限,所以难免有错误出现,如果您发现了这些错误,或者有什么建议,请来信指教,谢谢。

Qt OpenGL的准备工作

因为Qt存在很多版本,另外它支持的平台也很多,到目前为止我只实验了几个组合,所以就先把这些列出来吧,欢迎大家补充。

Unix/X11

Linux

Qt:自由版或者企业版都支持OpenGL模块,而专业版则不能。我现在使用的是3.1.0自由版和企业版。

gcc:编译器。我现在使用的是3.2。

X:Linux下的图形环境。我现在使用的是4.2.0。

Mesa:自由的OpenGL。我现在使用的是5.0。

Windows

Qt:企业版支持OpenGL模块,而专业版则不能。我现在使用的是3.1.0企业版。

Microsoft Visual Studio:编译器。我现在使用的是6.0。

创建一个OpenGL窗口

我假设您对Qt编程已经有了一定的了解,如果您还没有熟悉Qt编程,建议您先学习一下Qt编程的基础知识。

Qt中已经包含了OpenGL模块,具体情况您可以参考Qt OpenGL模块的相关内容。

NeHeWidget类

这就是我们继承QGLWidget类得到的OpenGL窗口部件类。

(由nehewidget.h展开。)

#include

class NeHeWidget : public QGLWidget

{

Q_OBJECT

因为QGLWidget类被包含在qgl.h头文件中,所以我们的类就需要包含这个头文件。Q_OBJECT是Qt中的一个专用的宏,具体说明请参见Qt的文档。

public:

NeHeWidget( QWidget* parent = 0, const char* name = 0, bool fs = false ); ~NeHeWidget();

protected:

void initializeGL();

void paintGL();

void resizeGL( int width, int height );

因为QGLWidget类已经内置了对OpenGL的处理,就是通过对initializeGL()、paintGL()和resizeGL()这个三个函数实现的,具体情况可以参考QGLWidget类的文档。

因为我们的这个Qt OpenGL教程取材于NeHe OpenGL教程,所以这里就用这个NeHeWidget类来继承QGLWidget类来使用相关OpenGL的功能。

initializeGL()是用来初始化这个OpenGL窗口部件的,可以在里面设定一些有关选项。paintGL()就是用来绘制OpenGL的窗口了,只要有更新发生,这个函数就会被调用。resizeGL()就是用来处理窗口大小变化这一事件的,width和height就是新的大小状态下的宽和高了,另外resizeGL()在处理完后会自动刷新屏幕。

void keyPressEvent( QKeyEvent *e );

这是Qt里面的鼠标按下事件处理函数。

protected:

bool fullscreen;

用来保存窗口是否处于全屏状态的变量。

};

(由nehewidget.cpp展开。)

#include "nehewidget.h"

NeHeWidget::NeHeWidget( QWidget* parent, const char* name, bool fs ) : QGLWidget( parent, name )

{

fullscreen = fs;

保存窗口是否为全屏的状态。

setGeometry( 0, 0, 640, 480 );

设置窗口的位置,即左上角为(0,0)点,大小为640*480。

setCaption( "NeHe's OpenGL Framework" );

设置窗口的标题为“NeHe's OpenGL Framework”。

if ( fullscreen )

showFullScreen();

如果fullscreen为真,那么就全屏显示这个窗口。

}

这个是构造函数,parent就是父窗口部件的指针,name就是这个窗口部件的名称,fs就是窗口是否最大化。

NeHeWidget::~NeHeWidget()

{

}

这个是析构函数。

void NeHeWidget::initializeGL()

{

glShadeModel( GL_SMOOTH );

这一行启用smooth shading(阴影平滑)。阴影平滑通过多边形精细的混合色彩,并对外部光进行平滑。我将在另一个教程中更详细的解释阴影平滑。

glClearColor( 0.0, 0.0, 0.0, 0.0 );

这一行设置清除屏幕时所用的颜色。如果您对色彩的工作原理不清楚的话,我快速解释一下。色彩值的范围从0.0到1.0。0.0代表最黑的情况,1.0就是最亮的情况。glClearColor后的第一个参数是红色,第二个是绿色,第三个是蓝色。最大值也是1.0,代表特定颜色分量的最亮情况。最后一个参数是Alpha值。当它用来清除屏幕的时候,我们不用关心第四个数字。现在让它为0.0。我会用另一个教程来解释这个参数。

通过混合三种原色(红、绿、蓝),您可以得到不同的色彩。希望您在学校里学过这些。因此,当您使用glClearColor(0.0, 0.0, 1.0, 0.0 ),您将用亮蓝色来清除屏幕。如果您用glClearColor(0.5, 0.0, 0.0, 0.0 )的话,您将使用中红色来清除屏幕。不是最亮(1.0),也不是最暗(0.0)。要得到白色背景,您应该将所有的颜色设成最亮(1.0)。要黑色背景的话,您该将所有的颜色设为最暗(0.0)。

glClearDepth( 1.0 );

设置深度缓存。

glEnable( GL_DEPTH_TEST );

启用深度测试。

glDepthFunc( GL_LEQUAL );

所作深度测试的类型。

上面这三行必须做的是关于depth buffer(深度缓存)的。将深度缓存设想为屏幕后面的层。深度缓存不断的对物体进入屏幕内部有多深进行跟踪。我们本节的程序其实没有真正使用深度缓存,但几乎所有在屏幕上显示3D场景OpenGL程序都使用深度缓存。它的排序决定那个物体先画。这样您就不会将一个圆形后面的正方形画到圆形上来。深度缓存是OpenGL十分重要的部分。

glHint( GL_PERSPECTIVE_CORRECTION_HINT, GL_NICEST );

真正精细的透视修正。这一行告诉OpenGL我们希望进行最好的透视修正。这会十分轻微的影响性能。但使得透视图看起来好一点。

}

这个函数中,我们对OpenGL进行所有的设置。我们设置清除屏幕所用的颜色,打开深度缓存,启用smooth shading(阴影平滑),等等。这个例程直到OpenGL 窗口创建之后才会被调用。

void NeHeWidget::paintGL()

{

glClear( GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT );

清楚屏幕和深度缓存。

glLoadIdentity();

重置当前的模型观察矩阵。

}

这个函数中包括了所有的绘图代码。任何您所想在屏幕上显示的东东都将在此段代码中出现。以后的每个教程中我都会在例程的此处增加新的代码。如果您对OpenGL已经有所了解的话,您可以在glLoadIdentity()调用之后,函数返回之前,试着添加一些OpenGL代码来创建基本的形。如果您是OpenGL新手,等着我的下个教程。目前我们所作的全部就是将屏幕清除成我们前面所决定的颜色,清除深度缓存并且重置场景。我们仍没有绘制任何东东。

void NeHeWidget::resizeGL( int width, int height )

{

if ( height == 0 )

{

height = 1;

}

防止height为0。

glViewport( 0, 0, (GLint)width, (GLint)height );

重置当前的视口(Viewport)。

glMatrixMode( GL_PROJECTION );

选择投影矩阵。

glLoadIdentity();

重置投影矩阵。

gluPerspective( 45.0, (GLfloat)width/(GLfloat)height, 0.1, 100.0 );

建立透视投影矩阵。

glMatrixMode( GL_MODELVIEW );

选择模型观察矩阵。

glLoadIdentity();

重置模型观察矩阵。

}

上面几行为透视图设置屏幕。意味着越远的东西看起来越小。这么做创建了一个现实外观的场景。此处透视按照基于窗口宽度和高度的45度视角来计算。0.1,100.0是我们在场景中所能绘制深度的起点和终点。

glMatrixMode(GL_PROJECTION)指明接下来的两行代码将影响projection matrix (投影矩阵)。投影矩阵负责为我们的场景增加透视。glLoadIdentity()近似于重置。它将所选的矩阵状态恢复成其原始状态。调用glLoadIdentity()之后我们为场景设置透视图。

glMatrixMode(GL_MODELVIEW)指明任何新的变换将会影响modelview matrix (模型观察矩阵)。模型观察矩阵中存放了我们的物体讯息。最后我们重置模型观察矩阵。如果您还不能理解这些术语的含义,请别着急。在以后的教程里,我会向大家解释。只要知道如果您想获得一个精彩的透视场景的话,必须这么做。

这个函数的作用是重新设置OpenGL场景的大小,而不管窗口的大小是否已经改变(假定您没有使用全屏模式)。甚至您无法改变窗口的大小时(例如您在全屏模式下),它至少仍将运行一次——在程序开始时设置我们的透视图。OpenGL 场景的尺寸将被设置成它显示时所在窗口的大小。

void NeHeWidget::keyPressEvent( QKeyEvent *e )

{

switch ( e->key() )

{

case Qt::Key_F2:

fullscreen = !fullscreen;

if ( fullscreen )

{

showFullScreen();

}

else

{

showNormal();

setGeometry( 0, 0, 640, 480 );

}

updateGL();

break;

如果按下了F2键,那么屏幕是否全屏的状态就切换一次。然后再根据需要,显示所要的全屏窗口或者普通窗口。

case Qt::Key_Escape:

close();

}

如果按下了Escape键,程序退出。

}

main.cpp

(由main.cpp展开。)

#include

#include

Qt的应用程序都是一个QApplication类,所以qapplication.h必须要包含。因为我们在进入OpenGL窗口之前让用户选择是否使用全屏窗口,所以使用了QMessageBox类,所以qmessagebox.h也要包含。

#include "nehewidget.h"

int main( int argc, char **argv )

{

bool fs = false;

我们把这个布尔型变量的初始值设置为false。

QApplication a(argc,argv);

每一个Qt应用程序都使用QApplication类。

switch( QMessageBox::information( 0,

"Start FullScreen?",

"Would You Like To Run In Fullscreen Mode?",

QMessageBox::Yes,

QMessageBox::No | QMessageBox::Default ) )

{

case QMessageBox::Yes:

fs = true;

break;

case QMessageBox::No:

fs = false;

break;

}

这里弹出一个消息对话框,让用户选择是否使用全屏模式。 NeHeWidget w( 0, 0, fs );

创建一个NeHeWidget对象。

a.setMainWidget( &w );

设置应用程序的主窗口部件为w。

w.show();

显示w。

return a.exec();

程序返回。

}

本课程的源代码。

你的第一个多边形

上一课中,我教您如何创建一个OpenGL窗口。这一课中,我将教您如何创建三角形和四边形。我们讲使用GL_TRIANGLES来创建一个三角形,GL_QUADS 来创建一个四边形。

我们只要修改第一课中的NeHeWidget类中的paintGL()函数就可以了。NeHeWidget类

(由nehewidget.cpp展开。)

void NeHeWidget::paintGL()

{

glClear( GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT );

清除屏幕和深度缓存。

GlLoadIdentity ();

重置当前的模型观察矩阵。

当您调用glLoadIdentity()之后,您实际上将当前点移到了屏幕中心,X坐标轴从左至右,Y坐标轴从下至上,Z坐标轴从里至外。OpenGL屏幕中心的坐标值是X和Y轴上的0.0点。中心左面的坐标值是负值,右面是正值。移向屏幕顶端是正值,移向屏幕底端是负值。移入屏幕深处是负值,移出屏幕则是正值。

glTranslatef( -1.5, 0.0, -6.0 );

glTranslatef(x, y, z)沿着X, Y 和Z 轴移动。根据前面的次序,下面的代码沿着X轴左移1.5个单位,Y轴不动(0.0),最后移入屏幕6.0个单位。注意在glTranslatef(x, y, z)中当您移动的时候,您并不是相对屏幕中心移动,而是相对与当前所在的屏幕位置。

现在我们已经移到了屏幕的左半部分,并且将视图推入屏幕背后足够的距离以便我们可以看见全部的场景-创建三角形。

glBegin( GL_TRIANGLES );

开始绘制三角形。

glBegin(GL_TRIANGLES)的意思是开始绘制三角形,glEnd() 告诉OpenGL三角形已经创建好了。通常您会需要画3个顶点,可以使用GL_TRIANGLES。在绝大多数的显卡上,绘制三角形是相当快速的。如果要画四个顶点,使用

GL_QUADS的话会更方便。但据我所知,绝大多数的显卡都使用三角形来为对象着色。最后,如果您想要画更多的顶点时,可以使用GL_POLYGON。

本节的简单示例中,我们只画一个三角形。如果要画第二个三角形的话,可以在这三点之后,再加三行代码(3点)。所有六点代码都应包含在

glBegin(GL_TRIANGLES)和glEnd()之间。在他们之间再不会有多余的点出现,也就是说,(GL_TRIANGLES)和glEnd()之间的点都是以三点为一个集合的。这同样适用于四边形。如果您知道实在绘制四边形的话,您必须在第一个四点之后,再加上四点为一个集合的点组。另一方面,多边形可以由任意个顶点,

(GL_POLYGON)不在乎glBegin(GL_TRIANGLES)和glEnd()之间有多少行代码。

glVertex3f( 0.0, 1.0, 0.0 );

上顶点。

glBegin之后的第一行设置了多边形的第一个顶点,glVertex 的第一个参数是X 坐标,然后依次是Y坐标和Z坐标。第一个点是上顶点,然后是左下顶点和右下顶点。glEnd()告诉OpenGL没有其他点了。这样将显示一个填充的三角形。CKer注:这里要注意的是存在两种不同的坐标变换方式,glTranslatef(x, y, z)中的x, y, z是相对与您当前所在点的位移,但glVertex(x,y,z)是相对于glTranslatef(x,

y, z)移动后的新原点的位移。因而这里可以认为glTranslate移动的是坐标原点,glVertex中的点是相对最新的坐标原点的坐标值。

glVertex3f( -1.0, -1.0, 0.0 );

左下顶点。

glVertex3f( 1.0, -1.0, 0.0 );

右下顶点。

glEnd();

三角形绘制结束。

glTranslatef( 3.0, 0.0, 0.0 );

在屏幕的左半部分画完三角形后,我们要移到右半部分来画正方形。为此要再次使用glTranslate。这次右移,所以X坐标值为正值。因为前面左移了1.5个单位,这次要先向右移回屏幕中心(1.5个单位),再向右移动1.5个单位。总共要向右移3.0个单位。

glBegin( GL_QUADS );

开始绘制四边形。

glVertex3f( -1.0, 1.0, 0.0 );

左上顶点。

glVertex3f( 1.0, 1.0, 0.0 );

右上顶点。

glVertex3f( 1.0, -1.0, 0.0 );

右下顶点。

glVertex3f( -1.0, -1.0, 0.0 );

左下顶点。

glEnd();

四边形绘制结束。

}

本课程的源代码。

上色

上一课中我教给您三角形和四边形的绘制方法。这一课我将教您给三角形和四边形添加两种不同类型的着色方法。使用单调着色(Flat coloring)给四边形涂上固定的一种颜色。使用平滑着色(Smooth coloring

颜色混合在一起,创建漂亮的色彩混合。

我们只要修改第二课中的NeHeWidget类中的paintGL()函数就可以了。NeHeWidget类

(由nehewidget.cpp展开。)

void NeHeWidget::paintGL()

{

glClear( GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT );

glLoadIdentity();

glTranslatef( -1.5, 0.0, -6.0 );

glBegin( GL_TRIANGLES );

glColor3f( 1.0, 0.0, 0.0 );

红色。

我们将颜色设为红色(纯红色,无绿色,无蓝色)。

glVertex3f( 0.0, 1.0, 0.0 );

上顶点。

接下来的一行代码设置三角形的第一个顶点(三角形的上顶点),并使用当前颜色(红色)来绘制。从现在开始所有的绘制的对象的颜色都是红色,直到我们将红色改变成别的什么颜色。

glColor3f( 0.0, 1.0, 0.0 );

绿色。

glVertex3f( -1.0, -1.0, 0.0 );

左下顶点。

glColor3f( 0.0, 0.0, 1.0 );

蓝色。

glVertex3f( 1.0, -1.0, 0.0 );

右下顶点。

glEnd();

glEnd()出现后,三角形将被填充。但是因为每个顶点有不同的颜色,因此看起来颜色从每个角喷出,并刚好在三角形的中心汇合,三种颜色相互混合。这就是平滑着色。

glTranslatef( 3.0, 0.0, 0.0 );

glColor3f( 0.5, 0.5, 1.0 );

一次性将颜色设置为蓝色。

现在我们绘制一个单调着色——蓝色的正方形。最重要的是要记住,设置当前色之后绘制的所有东东都是当前色的。以后您所创建的每个工程都要使用颜色。即便是在完全采用纹理贴图的时候,glColor3f仍旧可以用来调节纹理的色调。等等...,以后再说吧。

我们必须要做的事只需将颜色一次性的设为我们想采用的颜色(本例采用蓝色),然后绘制场景。每个顶点都是蓝色的,因为我们没有告诉OpenGL要改变顶点的颜色。最后的结果是.....全蓝色的正方形。再说一遍,顺时针绘制的正方形意味着我们所看见的是四边形的背面。

glBegin( GL_QUADS );

glVertex3f( -1.0, 1.0, 0.0 );

glVertex3f( 1.0, 1.0, 0.0 );

glVertex3f( 1.0, -1.0, 0.0 );

glVertex3f( -1.0, -1.0, 0.0 );

glEnd();

}

在这一课中,我试着尽量详细的解释如何为您的OpenGL多边形添加单调和平滑的着色效果的步骤。改改代码中的红绿蓝分量值,看看最后有什么样的结果。

本课程的源代码。

旋转

上一课中我教给您三角形和四边形的着色。这一课我将教您如何将这些彩色对象绕着坐标轴旋转。

其实只需在上节课的代码上增加几行就可以了。

我们将在NeHeWidget类中增加两个变量来控制这两个对象的旋转。它们是浮点类型的变量,使得我们能够非常精确地旋转对象。浮点数包含小数位置,这意味着我们无需使用1、2、3...的角度。你会发现浮点数是OpenGL编程的基础。新变量中叫做rTri的用来旋转三角形,rQuad 旋转四边形。

NeHeWidget类

(由nehewidget.h展开。)

protected:

bool fullscreen;

GLfloat rTri;

GLfloat rQuad;

};

上面就是添加的两个变量。rTri是用于三角形的角度,rQuad是用于四边形的角度。

(由nehewidget.cpp展开。)

NeHeWidget::NeHeWidget( QWidget* parent, const char* name, bool fs ) : QGLWidget( parent, name )

{

rTri = 0.0;

rQuad = 0.0;

fullscreen = fs;

setGeometry( 0, 0, 640, 480 );

setCaption( "NeHe's Rotation Tutorial" );

if ( fullscreen )

showFullScreen();

}

我们需要在构造函数中给rTri和rQuad赋初值,都是0.0。

void NeHeWidget::paintGL()

{

glClear( GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT );

glLoadIdentity();

glTranslatef( -1.5, 0.0, -6.0 );

glRotatef( rTri, 0.0, 1.0, 0.0 );

glRotatef( Angle, Xvector, Yvector, Zvector )负责让对象绕某个轴旋转。这个函数有很多用处。Angle 通常是个变量代表对象转过的角度。Xvector,Yvector和Zvector三个参数则共同决定旋转轴的方向。比如( 1, 0, 0 )所描述的矢量经过X 坐标轴的1个单位处并且方向向右。( -1, 0, 0 )所描述的矢量经过X坐标轴的1

个单位处,但方向向左。

D. Michael Traub:提供了对Xvector , Yvector 和Zvector 的上述解释。

为了更好的理解X, Y 和Z的旋转,我举些例子...

X轴-您正在使用一台台锯。锯片中心的轴从左至右摆放(就像OpenGL中的X 轴)。尖利的锯齿绕着X轴狂转,看起来要么向上转,要么向下转。取决于锯片开始转时的方向。这与我们在OpenGL中绕着X轴旋转什么的情形是一样的。(CKer注:这会儿您要把脸蛋凑向显示器的话,保准被锯开了花^-^。)

Y轴-假设您正处于一个巨大的龙卷风中心,龙卷风的中心从地面指向天空(就像OpenGL中的Y轴)。垃圾和碎片围着Y轴从左向右或是从右向左狂转不止。这与我们在OpenGL中绕着Y轴旋转什么的情形是一样的。

Z轴-您从正前方看着一台风扇。风扇的中心正好朝着您(就像OpenGL中的Z 轴)。风扇的叶片绕着Z轴顺时针或逆时针狂转。这与我们在OpenGL中绕着Z 轴旋转什么的情形是一样的。

上面的一行代码中,如果rtri等于7,我们将三角形绕着Y轴从左向右旋转7 。您也可以改变参数的值,让三角形绕着X和Y轴同时旋转。

glBegin( GL_TRIANGLES );

glColor3f( 1.0, 0.0, 0.0 );

glVertex3f( 0.0, 1.0, 0.0 );

glColor3f( 0.0, 1.0, 0.0 );

glVertex3f( -1.0, -1.0, 0.0 );

glColor3f( 0.0, 0.0, 1.0 );

glVertex3f( 1.0, -1.0, 0.0 );

glEnd();

上面的绘制三角形的代码没有改变。在屏幕的左面画了一个彩色渐变三角形,并绕着Y轴从左向右旋转。

glLoadIdentity();

我们增加了另一个glLoadIdentity()调用。目的是为了重置模型观察矩阵。如果我们没有重置,直接调用glTranslate的话,会出现意料之外的结果。因为坐标轴已经旋转了,很可能没有朝着您所希望的方向。所以我们本来想要左右移动对象的,就可能变成上下移动了,取决于您将坐标轴旋转了多少角度。试试将glLoadIdentity() 注释掉之后,会出现什么结果。

重置模型观察矩阵之后,X、Y、Z轴都以复位,我们调用glTranslate。您会注意到这次我们只向右移了1.5单位,而不是上节课的3.0单位。因为我们重置场景的时候,焦点又回到了场景的中心(0.0)处。这样就只需向右移1.5单位就够了。当我们移到新位置后,绕X轴旋转四边形。正方形将上下转动。

glTranslatef( 1.5, 0.0, -6.0 );

glRotatef( rQuad, 1.0, 0.0, 0.0 );

绕X轴旋转四边形。

glColor3f( 0.5, 0.5, 1.0 );

glBegin( GL_QUADS );

glVertex3f( -1.0, 1.0, 0.0 );

glVertex3f( 1.0, 1.0, 0.0 );

glVertex3f( 1.0, -1.0, 0.0 );

glVertex3f( -1.0, -1.0, 0.0 );

glEnd();

rTri += 0.2;

rQuad -= 0.15;

我们在构造函数中已经将rTri和rQuad的值设为0.0,在这里我们每绘制完一次图像,就修改一下这两个变量。两个变量的变化会使对象的旋转角度发生变化。

尝试改变下面代码中的+和-,来体会对象旋转的方向是如何改变的。并试着将0.2改成1.0。这个数字越大,物体就转的越快,这个数字越小,物体转的就越慢。

}

在这一课中,我试着尽量详细的解释如何让对象绕某个轴转动。改改代码,试着让对象绕着Z轴、X+Y轴或者所有三个轴来转动:)。

2013 10 07 21:40 第二次看 end

本课程的源代码。

向三维进军

网店美工视觉设计实战教程(全彩微课版)-48481-教学大纲

《网店美工视觉设计实战教程(全彩微课版)》 教学大纲 一、课程信息 课程名称:网店美工:店铺装修+图片美化+页面设计+运营推广(全彩微课版) 课程类别:素质选修课/专业基础课 课程性质:选修/必修 计划学时:21 计划学分:2 先修课程:无 选用教材:《网店美工视觉设计实战教程(全彩微课版)》,何晓琴编著,2018年;人民邮电出版社出版教材; 适用专业:本书可作为有志于或者正在从事淘宝美工相关职业的人员学习和参考,也可作为高等院校电子商务相关课程的教材。 课程负责人: 二、课程简介 随着网店的迅速普及和全民化,衍生了“淘宝美工”这个针对网店页面视觉设计的新兴行业。本书从淘宝美工的角度出发,为淘宝卖家提供全面、实用、快速的店铺视觉设计与装修指导。主要包括网店美工基础、图片调色、图片修饰、店铺首页核心模块设计、详情页视觉设计、页面装修、视觉营销推广图制作等,最后针对无线端进行首页、详情页视觉的设计与装修。本书内容层层深入,并通过丰富的实例为读者全方面介绍淘宝美工在日常工作中所需的知识和技能,有效地引导读者进行淘宝店铺装修的学习。 本课程主要对淘宝美工的设计基础和方法进行详细介绍,通过学习该课程,使学生了解网店美工的基本要求,以及掌握网店的设计与制作。 三、课程教学要求

体描述。“关联程度”栏中字母表示二者关联程度。关联程度按高关联、中关联、低关联三档分别表示为“H”“M”或“L”。“课程教学要求”及“关联程度”中的空白栏表示该课程与所对应的专业毕业要求条目不相关。 四、课程教学内容

五、考核要求及成绩评定 注:此表中内容为该课程的全部考核方式及其相关信息。 六、学生学习建议 (一)学习方法建议 1. 理论配合实战训练进行学习,提高学生的实战动手能力; 2. 在条件允许的情况下,可以申请一个网店,进行深入学习; 3. 提高学生的是设计感和审美能力; (二)学生课外阅读参考资料 《网店美工:店铺装修+图片美化+页面设计+运营推广(全彩微课版)》,何晓琴编著,2018年,人民邮电出版社合作出版教材

淘宝网店二维码使用教程全攻略

一、什么是二维码——还记得超市的条形码吗? 谈起“二维码”,可能很多人会犯糊涂。但是与它类似的“一维条形码”广泛地运用于超市商品识别,却是我们每个人都十分熟悉的。二维码正是“一维条形码”发展的“高级阶段”,在一个小小的方块里面包含一条链接地址,引导使用者通过扫描设备(如手机)快速进入相应 的网址。 图1:一维条形码图2:淘宝二维码 现在,淘宝为卖家们提供二维码在线生成的工具,您可以将您的店铺和宝贝的“手机浏览链接”转化成二维码印制出来,夹在包裹中、印在优惠券上甚至是你的商品上。举例来说,接收包裹时,买家拿到印有二位码的优惠券,此时,他们只需用手机的摄像头“照”一下这个黑白相间的小方块,就可以快速地通过手机进入您的店铺中。二维码还有更多的妙用和更多的好处。 图3:生活中使用淘宝二维码的场景

二、淘宝二维码妙在何处——轻轻一扫客源不断! 1. 好处在哪里? 淘宝买家通过手机上的二维码识别软件,扫描卖家发布的淘宝二维码,可以直接找到卖家的促销活动,店铺首页,宝贝单品。免去输入网址、关键词搜索的麻烦。 淘宝卖家可以将二维码印刷到包裹中的宣传物上(如优惠券、宣传册),随包裹发给买家,吸引买家通过二维码进入店铺进行二次购买,为您带来源源不断的客流。 您可以在PC店铺和商品详情页中贴出二维码,使顾客可以在手机中快速收藏,随时随地光顾您的店铺! 卖家还可以考虑在平面媒体(如《淘宝天下》)上发布带有二维码的促销活动。对于有能力大卖家,还可以在自己的商品上贴上相应的二维码。 图4:二维码的引流作用 2. 买家的操作方法 有软件和摄像头的买家:淘宝合作的免费二维码软件有淘宝Android版、快拍、QuickMark、码上淘、魔印等,手机访问https://www.360docs.net/doc/4913356180.html,可快速下载。这些手机软件提供二维码扫描功能,只要买家打开这些软件,将摄像头对准二维码1秒中左右,识别成功后手机将自动进入对应的网页。 没有软件或者摄像头的买家可以在手机上进入https://www.360docs.net/doc/4913356180.html,页面,输入活动码,同样能够进入到您所设置的链接中。 图5:买家的使用方法

dw网页淘宝设计模板

竭诚为您提供优质文档/双击可除dw网页淘宝设计模板 篇一:dreamweaver在淘宝美工课中的应用 泉州新东方叶生方老师整理 dreamweaver在淘宝美工课中的应用 一、店铺装修(网页技术) 专业型课程分两个阶段:1、店铺装修基础阶段,2、html+css行内样式部分。 (一)实用型阶段——店铺装修基础 1、认识旺铺及类型、模板、模块、布局;旺铺20xx标准版拓展版20xx新版 2、ps切片导出web代码 3、dw表格排版 4、分类导航设计——ps切片、dw表格、热区三种技术综合运用 5、旺铺宽屏效果制作(页面背景、店头自定义、自定义大图三部分组成) 6、图片背景、旺旺代码、收藏代码、滚动代码 7、识别哪些效果属于模块功能,那些效果可以自定义

实现,常用的促销工具(限时打折、满就送、团购宝、搭配减价、会员管理等) 8、淘宝首页整体风格设计、“宝贝描详情页”风格设计 9、html常用标注介绍table、tR、td、img、a等用功能 (二)专业提升阶段——html+css行内样式 10、dw使用的注意要点以及认识tabletRtdFontdiVspanh1imgapliulmarquee等常用标注。 11、表格结构分析,学会手写简单的网页代码 12、认识css盒子模型 13、了解css排版基本方法——实际表格相似导航效果 14、运用css设计宝贝详情页版式、利用p、img标注的css属性设置版式 15、css美化表格 16、了解淘宝widget库的作用与意义——悬浮旺旺、宝贝放大镜等等特效 篇二:用dw做出漂亮的模板 如何用dw做出漂亮的促销表格模板 很多的卖家在逛淘宝店时会发现很多的店铺装修很美观,如打折模块和团购模块,自己想去问店主怎么制作,但是有几个淘宝卖家会告诉你呢,不过不要着急,下面让开淘网为你详解一番吧。今天我们讲的是如何用dReamweaVeR做

淘宝装修 SDK高级模板开发流程

淘宝网装修市场 高级模板设计指南1

目录 1、本地开发环境 (3) 1.1 什么是SDK (3) 1.2 下载SDK (3) 1.3 安装SDK (4) 1.4 SDK的目录结构 (7) 1.5 启动SDK (8) 2、使用SDK后台 (10) 2.1 创建模板 (10) 2.2 预览模板 (17) 2.3 配置SDK本地属性 (18) 3、模板的标准结构 (18) 4、设计模块 (18) 4.1 创建相关文件资源 (18) 4.2 编写模块代码 (19) 4.2.1 引入标识 (19) 4.2.2 使用KISSY效果 (19) 4.2.3 使用模块参数 (19) 4.2.4 调用数据接口 (20) 4.3 配置模块信息 (20) 5、设计页面 (22) 5.1 结构化页面 (22) 5.2 设计页面 (24) 5.2.1 引入单个模块 (24) 5.2.2 划分页面片区 (25) 5.2.3 配置页面信息 (26) 6、特殊页面要求 (27) 6.1 宝贝详情页面 (27) 6.2 宝贝列表,文章列表页面 (27) 6.3 不可装修的页面 (27) 7、调试模板装修效果 (28) 8、关于白名单过滤 (28) 9、PHP函数 (28) 10、发布模板到装修系统 (28) 2

1、本地开发环境 1.1什么是SDK SDK是淘宝提供给设计师在本地设计模板的软件开发包,SDK模拟了淘宝店铺环境。 SDK主要包括三个部分:Server,PHP引擎和模拟数据。 Server是指SDK会在本机上启动一个Server,这样我们可以通过浏览器浏览设计的作品。PHP引擎是指设计师只能使用PHP作为模板设计的语言。 模拟数据是指SDK包括了淘宝各个典型的店铺,这样设计师在设计模板时不用考虑实际的数据库。 目前,提供Windows操作系统和Mac操作系统的SDK工具。 1.2下载SDK 装修市场后台下载安装包,安装至本地,创建SDK web控制台。您将使用淘宝ShopSDK 来开发和上传设计模板。在开始设计之前,需在本地部署SDK环境。 设计师登录装修市场后,点击“设计师后台”导航按钮进入。(加入设计师注册流程帐号。) 进入设计师后台界面: 3

富网店,淘宝详情页及主图制作

加入富网店俱乐部https://www.360docs.net/doc/4913356180.html, 摘要:主图决定点击率,详情页决定转化率,主图是详情页的精华所在,是整个详情页的缩影。一般来说,先有详情页,后有主图。 在讨论今天的问题之前,我们先想想,淘宝能提供的资源其实就是展现。每一个网页的位置是有限的,例如搜索页的第一页就只能展示48个宝贝,类目页的第一页是95个宝贝,我们凭什么淘宝要把有限的免费展位资源给自己呢? 其实这点,和我们交朋友拜把子一个道理,当双方都能够给对方正反馈的时候,感情会一直维系下去。当一方长期接收对方的付出,但是却不反馈的时候,这段感情就岌岌可危了。所以,你希望淘宝照顾你,你自己也得照顾淘宝。 一、为什么要做好主图和详情页? 要怎么照顾淘宝?那就要了解淘宝的KPI(关键绩效指标)——销售额。我们先从一个订单的产生过程入手,看看如何帮助淘宝,提高它的KPI。 第一步:产生需求。比如天冷了,需要一件长袖的衣服。此刻脑海里面浮现出一件长袖衬衫。 第二步:选择淘宝平台,敲入关键词:长袖衬衫男。 第三步:看图片。

第四步:看哪个宝贝顺眼,点击宝贝。 这一页的搜素结果只有48个宝贝,但是我优先选择了其中一个点击进去,其他的47个宝贝就不会有流量了。这里就涉及到一个核心指标“点击率”,展现量*点击率=点击量(也就是流量)。 注意,淘宝把你放在搜索的第一页上面,不一定有流量,还得有买家点击了,你才有流量。试想,如果淘宝把你放在搜索首页,半天都没人点你的宝贝,猜猜下一秒会发生什么?淘宝会很生气,后果很严重!结果就是连展现都不给你了! 第五步:从上往下扫描详情页。 第六步:看评价,到了这一步如果没有什么意外就买单了。 第七步:掏钱买单 当然,如果详情页看了让我一点欲望都没有,我连评价都不看了,直接关掉页面走人。所以这里又有一个核心指标“转化率”,访客数*转化率*客单价=销售额,客单价=支付宝成交金额/成交用户数,也就是人均在你店里消费多少RMB。 综上,我们会发现,核心KPI主要是点击率(主图)和转化率(详情页)。一般来说,都有这么一个逻辑,先有详情页,后有主图,因为主图就是详情页的精华所在,是整个详情页的缩影。所以这里,我们先讲详情页。 二、详情页设计必要的几个动作

2019年中职商品经营专业改革建议

2018年商品经营专业改革建议 经济与管理教研组起草 1 现状分析 鉴于2017年8月商品经营专业招生只有16人报读,以至于该专业被暂停招生。商品经营专业作为经济管理教研组的主要专业,具有招生的吸引力,能够吸引多一点女生前来报读我校。目前商品经济已经进入互联网+时代,互联网、物联网、大数据已经占领了商品经营的半壁江山,即网商、微商、电子商务、B2C、电子支付结算的兴起,传统实体零售业态如超市、零售店、百货商场已经逐步被网店、微店取代,信息化、自动化、现代化是当今商品经营发展主要趋势。因此,商品经营专业课程设置必须与时俱进,商品经营专业的课程设计目标是围绕培养实体店铺的超市、百货商店的销售人员,在大格局观的指导下,商品经营的课程设置必须改革,必须紧跟时代步伐,否则我们这个专业必将遭到淘汰。只有改革,才能生存,才能图发展,为了商品经营专业在2018年8月秋季新学期的持续发展,吸取2017年的经验教训,建议从新经济格局出发,全面改革商品经营的课程设计,课程设计方向结合我校校情和资源配置,与新兴市场业态接轨,重新拟定本专业课程开设方向。 2 课程设计改革 2.1改革方向 在商品经营这个大专业下,设计两个方向分支,第一,商品经营(“互联网+”营销方向)。第二,商品经营(房地产营销方向)。之所以这样设计,是因为目前这两个方向都是市场经济最热门的方向,吸引大量的人才进入,前景很好,有利于就业。互联网+的网络虚拟经济也是国家鼓励发展的创新创业型商业业态,吸引了很多人才在电子商务领域从业。此外,房地产一手房、二手房的销售、租赁、按揭也正处于上升期。 2.2 专业改革策划思路 在招生宣传时,重新修改商品经营专业的课程授课方向及专业优秀,让学生、家长都知道,商品经营这个传统专业已经与时俱进,灌入了与当今互联网、物联

淘宝主图视频制作教程

淘宝主图视频制作教程_短短的9秒视频就能让大家可以一瞬间让众多观看者关注视频,可以让一个人一夜成名。同样地,淘宝9秒主图视频要的也是这样的效果,可以说是更强大的影响,也就是促进淘宝网内成交率的提升。商品详情页首屏第一个商品主图位置出现的视频,即主图视频。由于商品主图位置是买家进入详情页第一眼所见,因此主图以9秒影音动态的形式呈现,将增加用户在店停留时间,同时有效的在短时间内提升买家对商品的了解,促进买家做出购买决定。 对于商家来说,除了不正规手段,一切能帮助他们提高商品成交率的都是他们所追求的,但基于自身情况的考虑,大部分不希望付出太多的资金,一来,他们怕店铺装修得非常豪华,成交率却毫无起色;其次就是他们即使有信心,但制作出来的主图视频质量不好。这些都会直接营销店铺流量的!这个时候,甩手工具箱制作主图视频功能就能起到很大的作用了。 要想提高商品转化率,就要制作一个主图视频,让你的商品顿时灵动起来,再也不用靠花哨的图片后期处理,也不用绞尽脑汁想如何掳获人心的文字。与其它制作主图视频工具不同的是,甩手工具箱可以利用原来商品素材一键制作主

图视频,节省制作成本,不需要后期剪辑,任何新手都能操作。 制作主图视频步骤: 1、设置制作范围 请根据制作主图视频的范围需求,选择一下整店制作或者是批量制作 a、整店制作(适合制作整店或者店铺分类下主图视频) 输入待制作主图视频的淘宝店铺帐号或者店铺地址,然后点击下一步 b、批量制作(适合制作单个或者多个主图视频) 输入您要生成主图视频的商品地址,点击“下一步" 2、选择待制作商品主图视频的商品 勾选待制作主图视频的商品后,点击“下一步” 3、主图视频设置 选择设置主图视频信息后,点击下一步 4、主图视频详情 勾选制作成功的主图视频商品,点击“下一步”在弹出设置主图视频位置窗体中,点击修改按钮,设置一下存放主图视频位置,最后点击”确定导出“按钮 5.导出商品主图视频文件 导出商品主图视频文件后,可以在淘宝卖家中心编辑宝

全套UI设计教程安排

渡课平面设计UI设计美工培训 课程介绍Subject Introduction “全能设计师”是渡课教育提出的全新培训理念,致力于打造既会设计又会代码的复合型人才。学习1个月,学员即可胜任平面设计师,一个半月可胜任网页设计师,两个半月可胜任电商设计师,三个月即可成为U设计师,四个月可晋升为懂代码的全能设计师。 互联网公司设计总监共同研讨课程,典型案例分析,创意策划,头脑风暴贯穿始终,让你的技能更具核心竞争力。 渡课平面设计UI设计美工培训 就业岗位Related Jobs UI设计师,平面设计师,网页制作,网页设计师,电商美工,电商设计师 发展前景Development Prospect 在“互联网+”与020模式的大趋势下,设计师前景广阔,行业内人才供不应求,薪资呈逐年递增趋势。 课程设置Curriculum Provision 渡课视觉设计致力于培养懂代码的全能设计师,并针对此目标精心研究与代码完美结合的课程体系,从而让设计师与程序员之间“心有灵犀”能够更高效、更完美的配合工作。 渡课平面设计UI设计美工培训

课程特色 1、夯实软件基础—渡课平面设计培训,从基础图形绘制到广告图文设计、AI软件应用、矢量绘图及实用的线下广告设计制作、印刷流程等进行详解,为小白成为高手奠定础。 2、提高设计师职业素养--进行数字化信息处理、Web项目实训、项目综合管理、思维导图等训练。

3、注重创意及交互动效--提高学员的审美及策划基础,并制作整体项目动效,使学员对设计的整体性、全面性有更精准的把控。 4、海量项目实践--100+个实战项目案例且每周更新,饱满的课时,项目经验行业覆盖广。

淘宝美工PS教程店铺装修网页设计详情页切片平面设计店招直通车

江西省南昌市2015-2016学年度第一学期期末试卷 (江西师大附中使用)高三理科数学分析 一、整体解读 试卷紧扣教材和考试说明,从考生熟悉的基础知识入手,多角度、多层次地考查了学生的数学理性思维能力及对数学本质的理解能力,立足基础,先易后难,难易适中,强调应用,不偏不怪,达到了“考基础、考能力、考素质”的目标。试卷所涉及的知识内容都在考试大纲的范围内,几乎覆盖了高中所学知识的全部重要内容,体现了“重点知识重点考查”的原则。 1.回归教材,注重基础 试卷遵循了考查基础知识为主体的原则,尤其是考试说明中的大部分知识点均有涉及,其中应用题与抗战胜利70周年为背景,把爱国主义教育渗透到试题当中,使学生感受到了数学的育才价值,所有这些题目的设计都回归教材和中学教学实际,操作性强。 2.适当设置题目难度与区分度 选择题第12题和填空题第16题以及解答题的第21题,都是综合性问题,难度较大,学生不仅要有较强的分析问题和解决问题的能力,以及扎实深厚的数学基本功,而且还要掌握必须的数学思想与方法,否则在有限的时间内,很难完成。 3.布局合理,考查全面,着重数学方法和数学思想的考察 在选择题,填空题,解答题和三选一问题中,试卷均对高中数学中的重点内容进行了反复考查。包括函数,三角函数,数列、立体几何、概率统计、解析几何、导数等几大版块问题。这些问题都是以知识为载体,立意于能力,让数学思想方法和数学思维方式贯穿于整个试题的解答过程之中。 二、亮点试题分析 1.【试卷原题】11.已知,,A B C 是单位圆上互不相同的三点,且满足AB AC → → =,则A BA C →→ ?的最小值为( ) A .1 4- B .12- C .34- D .1-

相关主题
相关文档
最新文档