精华内容
下载资源
问答
  • Qt模型/视图原理(1):基本理论

    千次阅读 多人点赞 2018-10-17 01:46:22
    Qt模型/视图原理(1):基本理论 若对C++语法不熟悉,建议参阅《C++语法详解》一书,电子工业出版社出版。 数据通常由若干数据项(item)组成。 MVC把需要处理的数据及其显示分离开来。MVC把图形界面分为三部分:...

    Qt模型/视图原理(1):基本理论

    本文为原创文章,转载请注明出处,或注明转载自“黄邦勇帅(原名:黄勇)

    本文出自本人原创著作《Qt5.10 GUI完全参考手册》网盘地址:
    https://pan.baidu.com/s/1iqagt4SEC8PUYx6t3ku39Q
    《C++语法详解》网盘地址:https://pan.baidu.com/s/1dIxLMN5b91zpJN2sZv1MNg

    若对C++语法不熟悉,建议参阅本人所著《C++语法详解》一书,电子工业出版社出版,该书语法示例短小精悍,对查阅C++知识点相当方便,并对语法原理进行了透彻、深入详细的讲解,可确保读者彻底弄懂C++的原理,彻底解惑C++,使其知其然更知其所以然。此书是一本全面了解C++不可多得的案头必备图书。

    数据通常由若干个数据项(item)组成。
    MVC把需要处理的数据及其显示分离开来。MVC把图形界面分为三个部分:模型(Model)、视图(View)、控制器(Controller)。
     模型:用于管理数据,注意,数据不一定需要位于模型之中
     视图:就是呈现在用户面前的界面外观,视图负责把模型中的数据显示给用户。
     控制器:用于处理用户在用户界面的输入。
    1、Qt实现的MVC模型(见图8-4)
    在这里插入图片描述
    Qt把视图和控制器组合在一起,从而形成模型/视图结构。模型直接与数据进行通信,并为视图和委托提供访问数据的接口。
    数据与模型:数据不一定需要存储在模型中,数据也可以存储在文件、数据库等其他地方,存储的数据不一定拥有一种数据结构,但是模型通常会把这些数据组织成一种数据结构(比如列表(list)结构、树形(tree结构等),这种结构只是逻辑上的结构,数据本身不一定拥有这种结构,然后视图根据模型提供的逻辑结构显示数据,比如列表视图(QListView)可以显示把数据组织成列表结构的模型(QStandardItemModel模型实现了该种结构)中的数据;当然,也可以使用列表视图显示组织为树形结构的数据,但这样做需要做一些比较麻烦的处理才能正确显示,所以通常应使用列表视图显示列表模型的数据,树形视图显示树形结构模型的数据。
    为了对用户的输入进行灵活的处理,Qt引入了委托Delegate(或代理)的概念,委托其实就是把用户输入的数据委托给Qt的某个部件处理,比如委托QSpinBox部件来处理用户输入的整数等。另外,委托还会绘制(或渲染)视图中的个别数据项。
    模型、视图、委托之间的通信使用Qt的信号和槽机制来完成。
    图8-5为实际的图形界面,MVC各部分间的功能如图8-5所示
    在这里插入图片描述
    2、Qt对模型/视图结构的具体实现
    (1)、模型
    Qt使用抽象类QAbstractItemModel来描述模型,所有的模型都是通过子类化该抽像类而实现的。Qt实现了一些标准的现成模型,下面是一简介:
     QStringListModel:用于存储QString项目的列表。
     QStandardItemModel:该模型可以被当作列表模型、表格模型、树模型来使用。
     QFileSystemModel:该模型提供本地文件系统中的文件和目录信息,模型本身没有任何的数据项目。
     QSqlQueryModel、QSqlTableModel、QSqlRelationalTableModel与数据库有关。
    (2)、视图
    Qt使用抽象类QAbstractItemView来描述视图,所有的视图都是通过子类化该抽像类而实现的。Qt实现了一些标准的现成视图,比如QListView(列表视图),QTableView(表格视图),QTreeView(树视图)等。
    (3)、委托
    Qt使用抽象类QAbstractItemDelegate来描述委托,Qt实现了两个委托类,QStyledItemDelegate和QItemDelegate,这两个委托之中只能使用其中一个,其区别在于QItemDelegate总是使用一种默认的样式绘制数据项,而QStyledItemDelegate使用当前的样式来绘制数据项,通常使用的是QStyledItemDelegate。Qt默认使用QStyledItemDelegate。
    3、使用Qt模型/视图的步骤(见示例8.1)

    示例8.1 显示一个简单的表格(界面见图8-6)
    QStandardItemModel model(3,3,this); //创建一个3行3列的表格结构的模型
            QTableView v1;		 //创建一个表格视图
        //设置模型的数据,使用索引的形式设置每个数据项的值
            model.setData(model.index(0,0),123);
            model.setData(model.index(0,1),222);
            model.setData(model.index(0,2),333);
            model.setData(model.index(1,0),444);
            model.setData(model.index(1,1),555);
            model.setData(model.index(1,2),666);
            model.setData(model.index(2,0),777);
            model.setData(model.index(2,1),888);
            model.setData(model.index(2,2),999);
            v1.setModel(&model);  	//设置视图v1的模型
            v1.show();  			//显示视图
    

    在这里插入图片描述

    8.1.2 定位模型中的数据与模型索引
    1、模型的结构
    在Qt中,无论数据被存储为何种数据结构,模型总是以层次结构(即树形结构)来表示数据,视图按照此约定来访问模型中的数据,若数据是列表(list)或表格(tab)结构的数据,则可以把其看作是只含有顶层节点,不含任何子节点的树形结构。也就是说,我们在子类化QAbstractItemModel来自定义自已的模型结构时,始终应以树形结构为出发点,来组织自已的模型结构。
    2、模型索引(简称索引)
    Qt使用模型索引来使数据的表示和访问相分离,视图和委托使用索引来访问模型中的数据项,因此,只有模型知道怎样获取数据。
    模型索引不像普通索引仅使用一个数字就能描述,模型索引需要使用3个属性进行描述:行号、列号、父模型索引。虽然模型索引使用行号、列号来定位数据项,但这并不意味着,数据是存储在数组或表格结构中的,使用行号、列号只是允许模型与视图、代理进行通信的一种约定。之所以需要父模型索引,是因为Qt的模型都是以层次结构(树形结构)组织的,Qt具体实现时,顶级数据项的父模型索引,使用“无效模型索引”来表示。
    模型索引包含一个指向创建它们的模型的指针,当使用多个模型时,可避免混淆。
    3、Qt对模型索引的实现
    Qt使用QModelIndex类实现模型索引,该类提供的索引是一个临时索引,因为模型可能会随时重新组织其内部结构(即数据项可能随时发生变化,比如删除、增加新数据项等),因此模型索引可能会变得无效,所以模型索引不需要也不应被存储,若需要对数据项进行长时间的引用,应使用QPersistentModelIndex类创建一个持久模型索引。
    使用模型索引引用模型中数据项的方法是使用QAbstractItemModel::index()函数。
    无效模型索引使用零参数的QModelIndex类的构造函数创建,即QModelIndex()就表示创建了一个无效模型索引。
    4、下面以代码的形式来说明模型索引,图8-7为Qt常见的模型结构。
    在这里插入图片描述
    (1)、树形结构
    //获取数据项A的模型索引,A的父索引由一个无效模型索引指定。
    QModelIndex iA = model.index(0,0, QModelIndex());
    //获取数据项B的模型索引,B位于父索引iA的第1行第1列位置。
    QModelIndex iB = model.index(1,1, iA);
    (2)、表格结构
    //获取数据项B的模型索引,B是顶级数据项,因此其父索引是一个无效索引。
    QModelIndex iB = model.index(1,2, QModelIndex());
    (3)、列表结构
    //获取数据项B的模型索引,B是顶级数据项,因此其父索引是一个无效索引。
    QModelIndex iB = model.index(1,0, QModelIndex());

    8.1.3 数据的角色与数据的类型
    同一个类型的数据可以作为不同的角色(或作用)来使用,比如对于字符串"AAA",可把该字符串以文本的形式显示在视图的相应位置上,也可把该字符串作为工具提示使用,还可把该字符串作为what’s this的帮助提示等。由此可见,数据的角色,决定了该数据在视图中的显示方式,角色不同,显示方式也不同。
    数据项与数据元素:位于同一个位置的数据项,并不仅仅
    只有一个数据元素,本文把组成数据项的数据称为数据元素,每个数据元素都有其自身的角色,比如一个数据项可能会同时含有图标数据元素(角色为Qt::DecorationRole)、文本数据元素(角色为Qt::DisplayRole)、工具提示数据元素(角色为Qt::ToolTipRole)等(见图8-8第1行第2列的数据项"222")。
    在这里插入图片描述
    因为数据项由多个数据元素组成,因此把数据项使用一个单独的类来管理是比较方便的,比如对于QStandardItemModel模型的数据项,就使用了类QStandardItem来专门管理其数据项。
    为了避免概念上的混乱,下面对数据、数据项、项(项目)、节点、单元格、数据元素、模型索引(索引)做一简介
    ①、数据:是一个统称,既可以是数据项也可以是数据元素。
    ②、数据项:是由多个数据元素组成的,每个数据元素都有自已的角色。
    ③、单元格、节点、项目:这三个概念通常用于指模型中的某一个数据项所在的位置,只是对于不同的模型结构会有不同的称呼,比如树形结构通常称为节点,表格结构通常称为单元格,而项目是一种更通用的称呼,Qt中通常称其为项目(item)或数据项;有时也会对以上概念加以区别对待,比如单元格XXX的数据项,此时单元格表示位置,数据项就表示实际存储的数据。不管怎样,模型中某个数据项所在位置都是需要使用模型索引来指定的,因此单元格、节点、项目、数据项、模型索引这几个概念通常会根据不同的情形用于表示模型中的某个位置。
    标准的数据角色由枚举Qt::ItemDataRole来描述,见表8-1。数据角色由QAbstractItemModel::setData()函数的第3个参数指定,其使用方法如下,其效果见图8-8第1行第2列的单元格。

    model.setData(model.index(0,1),222,Qt::DisplayRole);    //设置显示的文本
    model.setData(model.index(0,1),QIcon("F:/1i.png"),Qt::DecorationRole);  //设置图标
    model.setData(model.index(0,1),"EEE",Qt::ToolTipRole);   //设置工具提示
    

    在这里插入图片描述

    8.1.4 选择视图中的数据项(选择模型)

    对视图内项目的选择Qt使用QItemSelectionModel类(选择模型)来实现。所有的标准视图都有自已默认的选择模型。视图可以使用QAbstractItemView::selectionModel()函数和QAbstractItemView::setSelectionModel()来获取和设置选择模型。通常不需要对选择模型进行设置。

    8.1.5 Qt实现的便利类

    Qt通过模型/视图框架结构实现了一些标准的方便使用的部件,使用这些便利部件更方便和简单,这些类是QListWidget、QTreeWidget、QTableWidget。

    本文作者:黄邦勇帅(原名:黄勇)

    在这里插入图片描述

    展开全文
  • 识读第三角视图(机械识图)

    千次阅读 2020-11-30 15:25:09
    为了便于了解第三角视图的画法,本章将第三角画法和我们所熟悉的第一角画法做比较,帮助读者掌握第三角视图的识图规律。 1.投影形成的异、同点 如图13-la所示,两互相垂直相交的投影面,将空间分为四角,依次...

    第三角画法和第,角画法的异同点

    为了便于了解第三角视图的画法,本章将第三角画法和我们所熟悉的第一角画法做比较,帮助读者掌握第三角视图的识图规律。

    1.投影形成的异、同点

    如图13-la所示,两个互相垂直相交的投影面,将空间分为四个角,依次称为第一角、第二角、第三角和第四角。
    在这里插入图片描述
    在这里插入图片描述
    我国采用的是第一角画法,即将物体放在正平面的前方、水平面的上方进行投影。第三角画法则是将物体放在正平面的后方、水平面的下方进行投影。因此将物体放入两投影视角内,其观察者、物体和投影面三者之间的相互位置关系是不同的。

    第一角画法:将物体置于投影平面和观察者之间进行投射,其相互位置关系是观察者(视点)→物体→投影平面(视图),如图13-1a所示。

    第三角画法:将投影平面置于观察者和物体之间进行投射(把投影平面看做透明的),把物体投影到观察者和物体之间的投影面上,其相互位置关系是观察者视点)→投影平面(视图)→物体,形成的视图如图13-1a所示。

    图13-1b,c分别是物体在第一角投影和第三角投影的视图。

    2.视图名称和配置的异、同点

    1)视图的形成及名称。如图13-2a所示,第三角画法中,在V面上形成自前方投射所得的视图称为主视图,与第一角画法相同;在H面上自上方投射所得的视图称为俯视图,与第一角画法相同;在W面上的投影视图称为右视图,第一角画法称为左视图。

    在这里插入图片描述

    2)投影面展开方向。第三角画法的投影面按箭头所示方向展开。V面保持不动,将H面绕0X轴向上旋转900,将W面绕0Z轴向前旋转900,使V、H及W面处在同一平面上。

    3)三视图的配置不同。将第三角画法按上述方法展开后,俯视图在主视图的上方,右视图在主视图的右方,如图13-2b、c所示。

    在这里插入图片描述

    第一角画法中,俯视图在主视图的下方,左视图在主视图的右方。

    3.投影关系和投影方位的异、同点

    1)三视图的投影对应关系。第三角的主视图和俯视图等长,主视图和右视图等高,俯视图和右视图等宽,这种投影的对应关系和第一角画法相同,如图13-2c所示。

    2)三视图的方位对应关系。由于第三角画法的投影平面展开方向和视图配置与第一角画法不同,因此物体投影的前、后位置关系在视图上对应位置不同。

    第一角画法:俯、左视图靠近主视图的方向是物体的后方,远离主视图的方向是物体的前方。

    第三角画法:俯、右视图中靠近主视图的方向为物体的前方,远离主视图的方向是物体的后方。第三角画法的前、后方位关系正好与第一角画法相反。第三角画法的上下、左右“方位”与第一角画法相同。如图13-2所示矩形槽在物体的前方,该槽在第三角画法中的俯视图、右视图靠近主视图。

    由于第三角画法的前、后位置与第一角画法的前、后位置关系容易搞错,因此在识读第三角视图时,必须熟悉物体上的前、后“方位”在视图中的位置,才能判断物体各部分的相对位置关系。

    4.标记方法的不同

    为了区别图样是采用第一角画法还是第三角画法,国家标准规定:当采用第三角画法时,必须在图样中画出如图13-3a所示的第三角画法的识别符号,或在标题栏中用"3st Angle"说明。当采用第一角画法时,在图样中一般不画出第一角画法的识别符号,但必要时,可画出如图13-3b所示的第一角画法的识别符号,或在标题栏中用"1st Angle"说明。

    在这里插入图片描述
    在图样中如果没有对视图所属的画法进行标记或说明,识图时一旦误解,将导致零件制造错误,给生产造成损失。如图13-4a所示视图,若图样中没有第三角画法识别符号,则容易将其误解为第一角画法,如图134c所示,构思的形体如图13-4d所示,即在长方体的左边挖一半圆柱槽、右边挖一方形槽,造成零件制造错误。加上第三角画法标识符号后,只能按第三角画法构思形体,立体图如图13-4b所示。

    图13-4b,d所示为相同的第三角画法和第一角画法视图所表达的不同的物体。

    在这里插入图片描述

    5.六面基本视图

    对于形状比较复杂的机件,用两个或三个视图尚不能完整、清晰地表达它们的内外形状时,可在原有的三面投影体系上,再增设三个投影面,构成相互垂直的六面体,设想投影平面为透明平面,将机件置于六面体内,按第三角画法的投影关系进行投影,即观察者→投影平面→物体,得到六面基本视图。将六个投影面按图13-5a所示方法展开,使六个投影面处于同一平面上,得如图13-5b所示的六面基本视图。第三角画法的六面基本视图配置如下:
    以主视图为基准。
    俯视图放在主视图的上方,仰视图放在主视图的下方。
    右视图放在主视图的右方,左视图放在主视图的左方。
    后视图放在右视图的右方。

    在这里插入图片描述
    在这里插入图片描述
    若将机件置于六面体内,按第一角画法的投影关系进行投影,即观察者→物体→投影平面,如图13-6a所示,得到六面基本视图,并按图示方法展开,如图13-6b所示,为第一角画法六面基本视图的配置位置。
    将第三角画法和第一角画法的六面基本视图作比较,有如下的不同之处:
    第三角画法的俯视图是第一角画法的仰视图。

    在这里插入图片描述
    在这里插入图片描述
    若将机件置于六面体内,按第一角画法的投影关系进行投影,即观察者→物体→投影平面,如图13-6a所示,得到六面基本视图,并按图示方法展开,如图13-6b所示,为第一角画法六面基本视图的配置位置。
    将第三角画法和第一角画法的六面基本视图作比较,有如下的不同之处:
    第三角画法的俯视图是第一角画法的仰视图。

    展开全文
  • C4D R19学习之002视图窗口与基本操作

    千次阅读 2020-07-15 09:56:58
    C4D R19学习 002视图窗口与基本操作 1.视图操作以及视图窗口功能 ·Alt+鼠标左键——旋转视图;...按鼠标中键切换到四个视图界面,在每个视图的查看中都可以渲染视图。 ②撤销视图 Ctrl+Shift+Z 当前视图为a,将目

    C4D R19学习

    002视图窗口与基本操作

    1.视图操作以及视图窗口功能

    ·Alt+鼠标左键——旋转视图;
    在按住alt键进行旋转时,光标的位置就是该目标旋转时所绕的点,想看哪一块,旋转时,光标就要移到哪里
    ·Alt+鼠标中键——平移视图;
    ·Alt+鼠标右键——拉近或拉远视图;
    在这里插入图片描述

    (1)查看

    在这里插入图片描述
    ①作为渲染视图 Shift+R 就可渲染当前视图
    默认将透视图作为渲染视图
    按鼠标中键切换到四个视图界面,在每个视图的查看中都可以渲染视图。
    ②撤销视图 Ctrl+Shift+Z
    当前视图为a,将目标对象旋转一定角度后为视图b,撤销视图后,视图会回到a的界面。
    ③重做视图 Ctrl+Shift+Y
    从视图a,再次回到视图b
    ④框显全部
    对象栏的所有对象都会在视图中显示出来,包括灯光,如下:
    在这里插入图片描述在这里插入图片描述
    ⑤框显几何体
    仅显示几何体,不显示灯光
    ⑥恢复默认场景
    恢复到正常原始状态
    ⑦框显选中对象 快捷键O
    在对象栏中选择一个对象,按快捷键O,会使该目标对象在操作视图中最大化显示
    ⑧框显选取元素 快捷键S
    先按N ~ D,使对象线条显示,此时框选选取元素选项被激活,选中两个面,执行该操作,此时,选中的两个面在操作视图中最大化显示。
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    ⑨镜头移动
    和Alt+鼠标中键效果一样
    ⑩重绘 快捷键A
    Ctrl+R对目标进行渲染,按A,就会退回到原来视图,相当于刷新当前视图。

    (2)摄像机

    在这里插入图片描述
    ①导航
    · 光标模式
    旋转视图时,围绕光标为基准进行旋转;
    · 中心模式
    鼠标光标失效,任何旋转以视图中心点为基准;
    · 对象模式
    在对象栏中选中目标对象a,那么旋转时,就会以a物体的中心作为基准,进行视图旋转。
    · 摄像机模式
    以摄像机为旋转基准
    ②使用摄像机
    当有多个摄像机时,可选择摄像机视图
    ③设置活动对象为摄像机
    运用在调节聚光灯照射位置时
    调节聚光灯的照射位置较为复杂,我们可以使聚光灯作为摄像机,以摄像机为基准旋转视图,使灯光照在我们需要的位置,回到默认摄像机,此时灯的位置调节完毕。
    ④调整视图
    可以将当前透视图显示成其他模式,左视图,右视图等。

    (3)显示

    在这里插入图片描述
    ①光影着色 N~A
    在这里插入图片描述

    ②光影着色(线条) N~B
    在这里插入图片描述
    ③快速着色 N~C
    ·忽略灯光
    在这里插入图片描述
    ④快速着色 (线条) N~D
    在这里插入图片描述
    ⑤常量着色 N~E
    ·忽略高光,仅仅显示单层颜色
    在这里插入图片描述
    ⑥常量着色 (线条)
    在这里插入图片描述
    ⑦隐藏线条 N~F
    ·没有色彩,只显示线条
    在这里插入图片描述
    ⑧线条 N~G
    ·忽略多边形,只显示细分
    在这里插入图片描述
    剩下的几个选项是配合上面使用的。

    (4)选项

    在这里插入图片描述
    ①细分级别
    在这里插入图片描述
    最后一个选项不建议勾选
    ②立体
    鼠标也有立体效果,可配合3D摄像机使用
    ③线性工作流程着色
    C4D默认勾起线性工作流程
    ④增强OPENGL
    开启后可以看到不同材质的细节
    在这里插入图片描述
    开启不同的参数,那么有该参数特征的对象就会显现出来
    Tessellation 置换 有凹凸效果的特效
    ⑤背面忽略
    透明物体背面忽略可以更好地观察
    ⑥等参线编辑
    正方体添加了一个细分曲面,如下:
    在这里插入图片描述
    开启等参线编辑,进入点模式,此时编辑就会以等参线的情况来编辑,如下:
    在这里插入图片描述
    如果关闭等参线,就会以立方体来编辑,如下:
    在这里插入图片描述
    ⑦层颜色
    最右边有个层,点开,并双击建立一个层如下:
    在这里插入图片描述
    将细分的立方体拖入层,立方体后面就会显示出他在这一个图层内:
    在这里插入图片描述
    此时,打开层颜色,在这一层内的图形就会显示这个图层的颜色:
    在这里插入图片描述
    ⑧多边形法线
    提示多边形法线方向
    进入面模式,选择两个面
    在这里插入图片描述
    打开设置,多边形中间出现法线
    在这里插入图片描述
    ⑨顶点法线
    提示顶点法线方向
    在这里插入图片描述
    ⑩显示标签
    让显示标签生效
    在显示标签下,选择透显状态,那么选中的对象就会变成透明。
    ⑪默认灯光
    如果当前场景没有灯光,那么c4d就会引用默认灯光来进行着色,可以通过该选项调整灯光角度。
    ⑫配置视图
    打开配置视图,在属性栏会出现以下选项:
    在这里插入图片描述
    显示,过滤,增强OPENGL和视图窗口中的功能一样
    ·查看
    查看中重要的如图,做海报的时候会用到
    在这里插入图片描述
    ·背景
    切换到正视图中,选择图像,照着建模
    在这里插入图片描述
    ·HUD 帮助我们获取对象信息
    在这里插入图片描述
    勾选相应选项,就会在操作视图左上角出现统计信息
    在这里插入图片描述 在这里插入图片描述
    ·立体 不需要管
    ⑬配置全部
    和配置视图属性一样,配置全部,会将设置的属性同时配置到其他视图。

    (5)过滤

    过滤出要显示的对象以及参数等
    在这里插入图片描述

    (6)面板

    在这里插入图片描述

    2.对象的相关属性

    (1)基本

    在这里插入图片描述
    主要掌握编辑器可见以及渲染器可见
    在对象栏中,有两个圆点,可以控制这两个功能的开启、关闭和默认。上面是控制编辑器,下边是渲染器。
    在这里插入图片描述
    在这里插入图片描述时,在这里插入图片描述
    在这里插入图片描述时,在这里插入图片描述
    在这里插入图片描述时,在这里插入图片描述
    渲染器的控制与编辑器的相同。

    (2)坐标

    在这里插入图片描述
    ·四元旋转
    在这里插入图片描述
    一个对象设置动画,旋转一定角度(例如320°),如果不开启四元旋转,那么该对象就会旋转320°,若开启,则该对象会自动选择一条最近的路线达到最终的位置,旋转40°。
    ·冻结变换
    在这里插入图片描述
    此时胶囊的所有坐标参数为红框里内容,在对该胶囊进行编辑时,若希望再次回到此时胶囊的位置,可以选择冻结全部,那么此坐标位置将作为坐标原点,且冻结框内会记录冻结时的位置坐标:
    在这里插入图片描述
    移动完对象后,若回到冻结时的位置坐标,只需要把坐标内各项指标归为0。
    在这里插入图片描述
    两个位置坐标的区别,一般情况下是一样的,表示对象的相对于坐标原点的位置,但当出现子集时,表示的就是子集与所属的相对位置,左侧红框内的选项可更改选项。

    (3)平滑着色

    对象栏中对象后面的棕色小圆就是代表着平滑着色,平滑着色的着色角度控制着对平滑曲面的着色程度。
    在这里插入图片描述
    在这里插入图片描述
    建立一个球,改小球的分段,球出现棱角,若开启平滑着色,那么渲染时,球会显得光滑,但调小参数角度小于19°时,或者直接删除对象后面的圆点,那么渲染后的球依旧棱角分明。
    在这里插入图片描述 在这里插入图片描述
    关闭理想渲染,删掉平滑着色:
    在这里插入图片描述在这里插入图片描述 在这里插入图片描述

    3.层级关系

    C4D中,不管是对对象的操作还是材质的操作都是受图层的控制和管理的。

    (1)材质的图层管理

    材质中,图层依旧存在覆盖效果,和ps等软件中一样

    (2)工具

    工具栏中,蓝色的是变形器,绿色的是生成器,要想生成器生效,生成器就要做蓝色变形器的父级。在这里插入图片描述
    ·变形器生效
    一是作为子集
    二是作为同一组内的平级
    (3)标签的层级关系
    标签中也有相应的层级关系,建立一个空对象和一个立方体,在属性栏将空对象设置成圆环的方式展示,并修改空对象名称,
    在这里插入图片描述 在这里插入图片描述
    想让这个空对象控制立方体的位置,鼠标右键点击对象名,添加一个角色标签里面的约束标签,并将其调到最后,
    在这里插入图片描述 在这里插入图片描述
    在属性栏,开启PSR,即位置、缩放、旋转,将空对象拖入目标中,如图:
    在这里插入图片描述
    此时,立方体的位置,缩放,旋转都会受到空白对象的控制,立方体本身不可以进行移动,旋转,缩放。
    添加一个振动标签并移到约束标签后面,在这里插入图片描述,设置一定的数值,立方体产生振动,后面设置的振动会优先于约束展示。
    若将振动标签给空白对象,他会先执行振动标签,在执行约束,那么立方体会随着空白标签的振动而振动。

    展开全文
  • 文章目录视图方面(〇)概念基本概念特点作用(一)创建视图语法格式说明(二)修改视图语法格式(三)删除视图语法格式(四)操作视图1.添加数据行2.修改数据行3.删除数据行4.提示 (〇)概念 基本概念 视图...

    六、视图方面

    (〇)概念

    基本概念

    视图(VIEW)由一个或多个数据表或视图导出的虚表或查询表,其内容由SELECT查询语句指定,与真实的表相似,包含一系列带有名称的列和行数据。但是,视图并不在数据库中以存储的数据值集形式存在,其数据的物理存放位置仍然在数据库的表中,是关系数据库系统提供给用户以多种角度观察数据库中数据的重要机制。

    对所引用的基本表来说,视图的作用类似于筛选。定义视图的筛选可以来自当前或其它数据库的一个或多个基本表,也可以来自其它视图。

    特点

    • 视图的列可以来自不同的表,是表的抽象和逻辑意义上建立的新关系。
    • 视图是由基本表(实表)产生的表(虚表)。
    • 视图的建立和删除不影响基本表。
    • 对视图内容的更新(添加、删除和修改)直接影响基本表。
    • 当视图来自多个基本表时,不允许添加和删除数据。

    作用

    (1)简化用户的操作。经常使用的查询可以定义为视图,从而使得用户不必为以后的操作每次都制定全部的条件。

    (2)提高安全性。通过视图,可通过制定限制条件和指定列限制用户对基本表的访问,用户只能查询和修改他们所能见到的数据,数据库中的其它数据既看不见也取不到,达到数据安全保护的目的。

    (3)提高逻辑数据独立性。视图可以使应用程序和数据库表在一定程度上独立。有了视图,程序可以建立在视图之上,从而使应用程序与数据库表被视图分隔开。

    (一)创建视图

    语法格式

    CREATE  VIEW  <视图名>[(列名列表)]   --视图名
    [with schemabinding]
    [WITH  ENCRYPTION]
    AS  <子查询>        --搜索语句
    [WITH  CHECK OPTION]—强制修改语句必须符合子查询中设置的条件
    

    说明

    • 视图名称必须遵循标识符的规则,且对每个架构都必须唯一。该名称不能与该架构包含的任何表的名称相同。
    • 可以在其它视图的基础上创建视图。
    • 不能为视图定义全文索引。
    • 不能创建临时视图,也不能对临时表创建视图。
    • WITH ENCRYPTION 表示SQL Server加密包含CREATE VIEW 语句的文本
    • WITH CHECK OPTION插入和删除的行必须满足视图中SELECT语句的WHERE条件
    -- 定义视图“V1_Reader”为读者表中读者编号和读者姓名的数据
    use Library
    go
    create view V1_Reader
    as 
    select RID as 读者编号,Rname as 读者姓名
    from Reader
    
    -- 定义视图“SReturnDate”,得到读者借书应还日期信息
    use Library
    go
    create view SReturnDate (读者编号,姓名,图书编号,图书名,应还日期)
    as
    select Borrow.RID,Reader.Rname,Book.BID,Book.Bname,
    from Borrow
    inner join Reader in Borrow.RID=Reader.RID,Boorow.Lenddate+Reader.Limitdays
    inner join ReaderType in ReaderType.TypeID=Reader.TypeID
    inner join Book in Borrow.BID=Book.BID
    where borrow.returndate is null
    
    -- 创建视图“overdue”,从视图“SReturnDate”中查询借阅超期的读者新消息
    use Library
    go
    create view overdue
    as
    select *
    from SReturnDate
    where 应还日期<getdate()
    

    (二)修改视图

    语法格式

    ALTER  VIEW 视图名
    AS  SELECT 查询子句
    
    -- 修改视图“V1_Reader”,把从表“Reader”中查询出的列“RID”和“Rname”改为“读者编号”和“读者姓名”
    use Library
    go
    alter view V1_Reader (读者编号,读者姓名)
    as
    select distinct RID,Rname
    from Reader
    

    (三)删除视图

    语法格式

    DROP  VIEW 视图名
    
    -- 删除V1_Reader
    drop view V1_Reader
    

    (四)操作视图

    1.添加数据行

    -- 通过视图“View_zy”添加一条新的数据行。
    use EDUC
    insert into View_zy(SID,Sname,Sex,Birthday,Specialty)
    values('2005216322','李晓燕','女','1998-9-6','计算机网络')
    

    2.修改数据行

    -- 将视图“View_zy”中姓名为侯爽的学生的出生日期改为“1991-05-03”。
    use EDUC
    update View_zy
    set birthday='1991-05-03'
    where Sname='侯爽'
    

    3.删除数据行

    -- 在视图“View_zy”中删除姓名为“李晓燕”的学生数据行
    use EDUC
    delect from View_zy
    where Sname='李晓燕'
    

    4.提示

    • 视图一经定义,便存储在数据库中。对视图的操作与对表的操作一样,可进行查询、修改与删除。
    • 当修改视图中的数据时,相应的基本表的数据也会产生变化;反之,当基本表的数据发生变化时,这种变化也会自动反映到视图中。实际上修改的还是基本表的数据。
    展开全文
  • 实验6 OpenGL模型视图变换

    千次阅读 2020-10-21 15:44:10
    理解掌握OpenGL程序的模型视图变换。 掌握OpenGL三维图形显示与观察的原理与实现。 2.实验内容: (1)阅读教材有关三维图形变换原理,运行示范实验代码,掌握OPENGL程序三维图形变换的方法; (2)阅读实验原理,运行...
  • blender视图详解

    2021-09-28 13:51:35
    2.1、快捷键变换:小键盘2是底视图、小键盘8是顶视图、小键盘4是左视图、小键盘6是右视图、小键盘7是前视图、小键盘9是后视图、小键盘0是相机视图。(如果是笔记本用户没有小键盘,可以模拟小键盘,但是我不推荐,会...
  • (1)视图概述 ...视图的结构和内容是通过SQL查询获得的,它也称为视图名,可以永久地保存在数据库中,视图在数据库内存储的是select语句,也即数据库内并没有存储视图表,而存储的是视图的定义。Sele...
  • 目录,更新ing,学习Java的点滴记录 ...熟悉基本开发流程 第四篇---->接收各类请求参数的方式 第五篇---->获取请求中的Request,Session,Cookie等对象属性 第篇---->拦截器开发 处理模型数据 1 介绍 视
  • MFC文档视图结构

    千次阅读 2018-04-01 15:19:23
    文档/视图概述为了统一和简化数据处理方法,Microsoft公司在MFC中提出了文档/视图结构的概念,其产品Word就是典型的文档/视图结构应用程序MFC通过其文档类和视图类提供了大量有关数据处理的方法分为数据的管理和显示...
  • MySQL中的视图操作

    2020-08-28 15:26:32
    文章目录1 为什么要使用视图2 创建视图3 查看视图4 更新视图数据5 修改视图6 删除视图 1 为什么要使用视图 小学的时候,每年都会举办一次抽考活动,意思是从每一班级里面筛选出几优秀的同学去参加考试。这时候很...
  • Unity3D视图介绍

    千次阅读 2020-10-31 18:49:59
    一、Unity 3D 界面布局 Unity 3D 主界面如下图所示,Unity 3D 的基本界面布局包括工具栏、菜单栏以及 5 主要的视图操作窗口,这5个视图为 Hierarchy(层次)视图、Project(项目)视图、Inspector(检视)视图、...
  • 前几天有小伙伴在群里问我,如何将6个视图平均分布在一 cell中,其实这样的布局在应用里很常见,比如6个菜单按钮,或者商城类应用的商品推荐部分。那么下面我就详细说一下我是怎么做的,希望可以帮助到更多的小...
  • SQL 使用视图

    2018-06-16 20:44:29
    视图是虚拟的表,与包含数据的表不一样,视图只包含使用时动态检索数据的查询。下面输入▼SELECT cust_name, cust_contact FROM Customers, Orders, OrderItems WHERE Customers.cust_id = Orders.cust_id AND ...
  • 自定义视图基本原则如下 1)、视图需要自行绘制,通常在paintEvent()函数内完成,所以除了必须实现的纯虚函数外,paintEvent()也应重新实现。另外若需要对单元格进行重新绘制、更新滚动条等,还需...
  • 数据库 视图和表

    千次阅读 2019-08-01 15:01:17
    数据库中表的概念很好理解,就是数据的一种组织存放形式。表中是包含真正的数据的。...我这里创建了一个视图 虽然我这里创建视图的语法是 create view view_table as select * from table1; 但是实...
  • odoo13学习 odoo的视图

    2020-12-16 12:12:15
    1. odoo的基本视图结构 基本视图通常共享下面定义的公共结构。占位符用全大写表示。 <record id="MODEL_view_TYPE" model="ir.ui.view"> <field name="name">NAME</field> <field name=...
  • SQL-什么是视图及如何使用视图

    千次阅读 2017-07-29 12:08:12
    SQL-什么是视图及如何使用视图 什么是视图? 它们怎样工作?何时使用它们? 如何利用视图简化执行的某些SQL操作? 1. 使用视图的原因 A. 重用SQL语句。 B. 简化复杂的SQL操作。在编写查询后...
  • PORTAL视图与项目视图【图解】

    千次阅读 2016-02-01 15:31:38
    第二章PORTAL视图与项目视图  TIA博途软件在自动化项目中可以使用两种不同的... 项目初期,可以选择面向任务的 Portal 视图简化用户操作,也可以选择一项目视图快速访问所有相关工具。Portal 视图以一种直观的方式
  • 单独留下现有约束(10pts空间到另一个视图),但添加另一约束:使标签的左边缘与超级视图的左边缘相差10pts,具有非必需的优先级(默认的高优先级可能会很好)。 Then, when you want them to move left, remove ...
  • ListView列表视图控件

    千次阅读 2016-01-22 17:23:05
    ListView列表视图控件通常用于显示数据,用户可以对这些数据和显示方式进行某些控制。还可以把包含在控件中的数据显示为列和行(像网格一样),或者显示为一列,或者显示为图标表示。 其实列表视图控件的作用,就像...
  • 主要学习目标: 1、了解软件的基本布局以及使用 2、熟悉基本的操作快捷键 3、创建一工程 ...工具栏,菜单栏,以及5主要的视图窗口组成unity软件的基本界面。 --视图窗口分别是hierarchy(层级视图),P
  • MySQL数据备份以及视图

    千次阅读 2019-01-10 12:26:02
    外键:foreign key,外面的键(键不在自己表中):如果一张表中有一字段(非主键)指向另外一张表的主键,那么该字段称之为外键. 增加外键 外键可以在创建表的时候或者创建表之后增加(但是要考虑数据的问题). 一张...
  • MySQL 视图、索引、外键关联策略

    千次阅读 2020-05-30 11:29:12
    grant授权用户只能操作视图,通过视图来操作基本表,可以保护基本表中的数据 提高查询性能。视图只是基本表的一部分,查视图比查全表快。尤其是多表查询的时候,查视图一张表比连接多张表查询要快很多   视图...
  • 视图的操作

    2021-11-17 22:43:20
    一、学习任务1:为什么使用视图 通过前面章节的知识可以发现,数据库中关于数据的查询有时候非常复杂,例如表连接、子查询等,这种査询会让程序员感到非常痛苦,因为它逻辑太复杂、编写语句比较多。当这种査询需要...
  • 在《Spring实战》的书中是包括6.3 使用Apache Tiles视图定义布局和6.4 使用Thymeleaf这两小节的,但是考虑到平时开发使用的比较少,就不进行介绍了,感兴趣的小伙伴们可以自行学习。 上一章主要关注...
  • 数据库的视图和索引

    2018-04-24 21:23:51
    用户通过视图来浏览数据表中感兴趣的部分或全部数据,而数据的物理存储位置仍然在表中。视图是一虚拟表,并不代表任何物理数据,只是用来查看数据的窗口而已。视图并不是以一组数据的形式存储在数据库中,数据库中...
  • - BUT0BK 5、供应商公司视图 :LFB1 6、供应商采购视图:LFM1 7、客户公司视图 :KNB1 8、客户销售和分销视图:KNVV 9、BP销售和分销视图:销项税 - KNVI BP 维护参数位置CVIS_EI_EXTERN -> CUSTOMER->CENTRAL_DATA-...
  • 关系数据库——视图/存储过程/触发器

    千次阅读 多人点赞 2019-12-02 09:51:43
    简化复杂的sql操作,在编写查询后,可以方便地重用它而不必知道他的基本查询细节。 使用表的组成部分而不是整个表。 保护数据。可以给用户授予表的特定部分的访问权限而不是整个表的访问权限。 更改数据格式和...
  • JPA的视图查询

    万次阅读 热门讨论 2012-12-27 14:43:33
    由于本人不定期会整理相关博文...昨天晚上遇到一需求,每天早上要生成一份报告给各个部门的Leader。实现方式基本上确定为HTML格式的电子邮件。但是数据方面犯了难。原因在于数据库中存储的数据是跨表的,而且还要...
  • 视图几何总结——三角形法

    千次阅读 2019-05-30 20:29:57
    视图几何总结——三角形法多视图几何总结——三角形法线性三角形法(1)齐次方法(2)非齐次方法几何法(1)非线性优化法(2)最优解法 多视图几何总结——三角形法 在《视觉SLAM十四讲》中三角测量那一节中简单...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 139,516
精华内容 55,806
关键字:

六个基本视图的位置