barriers / 阅读 / 详情

用OpenGL建立三维坐标系

2023-08-24 17:50:53
共1条回复
nicehost

使用OpenGL实现三维坐标的鼠标拣选Implementation of RIP(Ray-Intersection-Penetration)3D Coordinates Mouse Selection Using OpenGL 顾 露 (武汉理工大学 计算机系 中科院智能设计与智能制造研究所 湖北武汉 430070) 摘要(Abstract): 本文提出并实现一种用于三维坐标拣选的RIP(Ray-Intersection-Penetration)方法。介绍了如何在已经渲染至窗口的三维场景中,使用鼠标或者相关设备拣选特定三维对象的方法。此方法对于正交投影或透视投影均有效,相对于OpenGL自带的选择与反馈机制,本方法无论是拣选精度还是算法实现效率均高出许多,是一种比较通用的解决方案。 关键词(Keywords) 正交投影(Ortho-Projection)、透视投影(Perspective-Projection)世界坐标系、屏幕坐标系、三维拣选、OpenGL 一、简介(Introduction) OpenGL是一种比较“纯粹”的3D图形API,一般仅用于三维图形的渲染,对于特定领域的开发者(如游戏开发者)而言,如果选择使用 OpenGL进行开发,类似碰撞检测的机制就都需要自行编写了。但是由于鼠标在图形程序中的应用非常非常之广泛(例如现在已经很少有PC游戏能完全地脱离鼠标),OpenGL在图形库的基础上添加了选择与反馈机制(Select & Feedback)来满足用户使用鼠标实时操作三维图形的需要。但由于种种原因,我们需要更为特殊的选择机制以满足特定需求,在这里我们提出了一种简单迅速的RIP(Ray-Intersection-Penetration)方法,可以满足绝大多数典型应用的需要。 二、相关研究(Related Work) 用过OpenGL选择与反馈机制的开发者,或多或少可能都会觉得它难以令人满意。大致表现在下面几个方面:一、编写程序比较繁琐。想要使用选择反馈机制就需要切换渲染模式,操作命名堆栈,计算拣选矩阵,检查选中记录,这些繁琐的步骤很容易出错,而且非常不便于调试,只会降低工作效率和热情。 二、只能做基于图元的选定。如下图(1 - a),使用GL_TRIANGLES绘制了一个三角形,三个顶点分别为 P1、P2和P3。若使用该机制,你将只能判断是否在三维场景中选中了这个三角形(用户点击处是否在P1、P2和P3的范围内),而无法判断用户是点击了这个三角形哪一部分(是左边的m区域内还是右边的n区域内),因为所绘制的P1、P2和P3本身构成的三角形就是一个基本图元,对于拣选机制而言是不可分的。当然,把这个三角形拆成两个三角形再分别进行测试也是一个可行的方案,可是看看图(1 - b),这可怎么拆呢?还有图(1 – c)呢?另外,如果n和m两个平面不共面呢?对于使用者而言,OpenGL提供的拣选机制功能的确有限。 三、降低了渲染效率。OpenGL中的选择和反馈是与普通渲染方式不同的一种特殊的渲染方式。我们使用时一般是先在帧缓存中渲染普通场景,然后进入选择模式重绘场景,此时帧缓存的内容并无变化。也就是说,为了选择某些物体,我们需要在一帧中使用不同的渲染方式将其渲染两遍。我们知道对对象进行渲染是比较耗时的操作,当场景中需要选择的对象多而杂的时候,采用这个机制是非常影响速度的。 另外在OpenGL红宝书中介绍了一种简便易行的办法:在后缓冲中使用不同的颜色重绘所有对象,每个对象用一个单色来标示其颜色,这样画好之后我们读取鼠标所在点的颜色,就能够确定我们拣选了哪个物体。这种方法有一个缺陷,当场景中需要选择的对象的数目超出一定限度时,可能会出现标识数的溢出。对于这个问题,红宝书给出的解决办法就是多次扫描。实践证明这种方法的确简便易行,但仍有不少局限性,而且做起来并不比第一种机制方便多少。限于篇幅,不再赘述。 三、具体描述(Related Work) 看过了上面两种方法,我们会发现这两种方法都不是十分的方便,而且使用者不能对其进行完全的控制,不能精确地判定鼠标定位与实际的世界空间中三维坐标的关系。那么有什么更好的办法能够更简单更精确地对其加以控制呢? 实际上此处给出的解决方案十分简单,就是一个很普通也很有用的 GLU 函数 gluUnProject()。此函数的具体用途是将一个OpenGL视区内的二维点转换为与其对应的场景中的三维坐标。转换过程如下图所示(由点P在窗口中的XY坐标得到其在三维空间中的世界坐标): 这个函数在glu.h中的原型定义如下: int APIENTRY gluUnProject ( GLdouble winx, GLdouble winy, GLdouble winz, const GLdouble modelMatrix[16], const GLdouble projMatrix[16], const GLint viewport[4], GLdouble *objx, GLdouble *objy, GLdouble *objz); 其中前三个值表示窗口坐标,中间三个分别为模型视图矩阵(Model/View Matrix),投影矩阵(Projection Matrix)和视区(ViewPort),最后三个为输出的世界坐标值。可能你会问:窗口坐标不是只有X轴和Y轴两个值么,怎么这里还有Z值?这就要从二维空间与三维空间的关系说起了。众所周知,我们通过一个放置在三维世界中的摄像机,来观察当前场景中的对象。通过使用诸如gluPerspective() 这样的OpenGL函数,我们可以设置这个摄像机所能看到的视野的大小范围。这个视野的边界所围成的几何体是一个标准的平截头体(Frustum),可以看做是金字塔状的几何体削去金字塔的上半部分后形成的一个台状物,如果还原成金字塔状,就得到了通常我们所说的视锥(View Frustum)这个视锥的锥顶就是视点(View Point)也就是摄像机所在的位置。平截头体,视锥以及视点之间的关系,如下图所示: 在上面的图中,远裁剪面ABCD和近裁剪面A"B"C"D"构成了平截头体,加上虚线部分就是视锥,顶点O就是摄像机所在的视点。我们在窗口中所能看到的东东,全部都在此平截头体内。这跟前面的窗口坐标Z值有什么关系呢?看下图: 如此图所示,点P和点P"分别在远裁剪面ABCD和近裁剪面A"B"C"D"上。我们点击屏幕上的点P,反映到视锥中,就是选中了所有的从点P到点P"的点。举个形象的例子,这就像是我们挽弓放箭,如果射出去的箭近乎笔直地飞出(假设力量非常之大近乎无穷),从挽弓的地点直至击中目标,在这条直线的轨迹上任何物体都将被一穿而过。对应这里的情况,用户单击鼠标获得屏幕上的某一点,即是指定了从视点指向屏幕深处的某一方向,也就确定了屏幕上某条从O点出发的射线(在图中即为OP)。在这里,我们称呼其为拣选射线。因此,从窗口的XY坐标,我们仅仅只能获得一条出发自O点的拣选射线,并不能得到用户想要的点在这条射线上的确切位置。这时候窗口坐标的Z值就能派上用场了。我们通过Z值,来指定我们想要的点在射线上的位置。假如用户点击了屏幕上的点(100,100)得到了这条射线OP,那么我们传入值1.0f就表示近裁剪面上的P点,而值0.0f则对应远裁剪面上的P"点。这样,我们通过引入一个窗口坐标的Z值,就能指定视锥内任意点的三维坐标。与此同时,我们还解决了前面红宝书给出的方法中存在的缺陷——同一位置上重叠物体的选择问题。解决办法是:从屏幕坐标得到射线之后,分别让重叠的物体与该射线求交,得到的交点,然后根据这些与视点的远近确定选择的对象。如此我们就不必受“仅仅只能选取屏幕中离观察者最近的物体”的限制了。这样一来,如果需要的话,我们甚至可以用代码来作一定的限定,通过判断交点与视点的距离,使得与该拣选射线相交的物体中,离视点远的对象才能被选取,这样就能够对那些暂时被其他对象遮住的物体进行选取。 至于如何求拣选射线与对象的交点,在各种图形学的书中的数学部分均有讲述,在此不再赘述。 四、例程(Sample Code Fragment) 前面讲述了RIP方法,现在我们来看如何编写代码以实现之,以及一些需要注意的问题。 由于拣选射线以线段形式存储更加便于后面的计算,况且我们可以直接得到纵跨整个平截头体的线段(即前面图中的线段PP"),故我们直接计算出这条连接远近裁剪面的线段。我们将拣选射线的线段形式称之为拣选线段。 在下面的代码前方声明有两个类Point3f和LineSegment这分别表示由三个浮点数构成的三维空间中的点,以及由两个点构成的空间中的一条线段。 应注意代码中用到了类Point3f的一个需要三个浮点参数的构造函数,以及类LineSegment的一个需要两个点参数的构造函数。 获取拣选射线的例程如下所示(使用C++语言编写): class Point3f;class LineSegment;LineSegment GetSelectionRay(int mouse_x, int mouse_y) { // 获取 Model-View、Projection 矩阵 & 获取Viewport视区 GLdouble modelview[16]; GLdouble projection[16]; GLint viewport[4]; glGetDoublev (GL_MODELVIEW_MATRIX, modelview); glGetDoublev (GL_PROJECTION_MATRIX, projection); glGetIntegerv (GL_VIEWPORT, viewport); GLdouble world_x, world_y, world_z; // 获取近裁剪面上的交点 gluUnProject( (GLdouble) mouse_x, (GLdouble) mouse_y, 0.0, modelview, projection, viewport, &world_x, &world_y, &world_z); Point3f near_point(world_x, world_y, world_z); // 获取远裁剪面上的交点 gluUnProject( (GLdouble) mouse_x, (GLdouble) mouse_y, 1.0, modelview, projection, viewport, &world_x, &world_y, &world_z); Point3f far_point(world_x, world_y, world_z); return LineSegment(near_point, far_point);} 如果你是使用Win32平台进行开发,那么应当注意传入正确的参数。因为无论是使用Win32 API 还是DirectInput 来获取鼠标坐标,得到的Y值都应取反后再传入。因为OpenGL默认的原点在视区的左下角,Y轴从左下角指向左上角,而Windows默认的原点在窗口的左上角,而Y轴方向与OpenGL相反,从左上角指向左下角。如下图所示:0XWin32 默认窗口坐标样式OpenGL 默认窗口坐标样式0XYY我们可以看到代码被注释分为了三个部分:获取当前矩阵及视区,获取近裁剪面的交点,获取远裁剪面的交点。我们通过OpenGL提供的查询函数轻松得到当前的ModelView和Projection矩阵,以及当前的Viewport(视区,也就是窗口的客户端区域,如果整个窗口区域用于OpenGL渲染的话)。获得两个裁剪面上的交点的代码基本上是一样的,唯一的不同点是我们前面曾经详细地讨论过的窗口的Z坐标。不错,这个坐标表示的就是“深浅”的概念。它的值从点P"到点P的变化是从0.0f逐渐增至1.0f。此处类似于OpenGL的深度测试机制。在得到两个交点之后,我们使用它们通过返回语句直接构建一条线段。在这里仅仅作为实例代码,故简捷清晰地直接返回线段对象,而没有通过引用参数来提高效率。此时用户可以使用这个函数来判断所选择的对象了。只需在需要的地方判断对象是否与此线段相交即可判断对象是否被选中,还可以通过进一步计算其交点位置来得到详细的交点信息。这些计算均是常见的计算机图形学与三维数学计算,比如线段与三角形求交,线段与面求交,线段与球体求交,线段与柱体或锥体求交,等等。请参考所列出的计算机图形学书籍。 五、结论(Conclusion) 在本文中,我们介绍了一种行之有效的三维坐标拾取方法,主要使用GLU库中的实用工具实现。这种方法速度快,效率高,能在不必重新绘制对象的前提下完成拣选工作。对比OpenGL自带的拣选机制来看,RIP的确在各种方面均有一定的优势。 六、参考文献(Reference) 【1】《OpenGL Programming Guide》OpenGL ARB Mason Woo, Jackie Heider, Tom Davis, Dave Shreiner 【2】《OpenGL Reference Manual》 OpenGL ARB 【3】《Computer Graphics》 Donald Heam, M. Pauline Baker 【4】《Computer Graphics using OpenGL 2nd Edition》 F.S. Hill, JR.

相关推荐

web开发 viewport是什么意思

《web开发从入门到放弃》
2023-08-18 01:38:362

svg 的viewport 和viewbox

viewport 很好理解,就是类似我们的电视机,我们只能通过看到电视机里边的内容,却无法看到电视画面外边的画面。 viewbox是什么呢,你去看文档会有很多答案,但是我觉得把握一个最基本的概念就可以, viewbox就是最后我们画图的坐标系统,也就是说我们在svg上画东西的时候,就是根据viewbox的坐标系统,来确定最后的位置的。 viewbox为什么这么难理解? 其实看了好多文章,根本都模糊不清楚,看svg精髓这本书里边说的也是云里雾里,不知所云 我觉得可以从以下几点进行理解 viewbox的定义 当viewbox的宽高比和viewport的宽高比相同的时候,首先是设置用户坐标,然后绘图 宽高比相同指的是 svg设置的width:height 与 viewbox设置的 width:height 相等 比如 这里的svg的宽高比是400: 200 = 2 viewbox设置的宽高比是 200: 100 = 2 所以这里的宽高比是一样的 表现如下 渲染过程 svg的viewport的宽高分别是800 和600 viewbox的设置宽高 分别是 0 0 800 600 这里所以用户的坐标是1:1 也就是用户坐标的一像素对应viewport的1像素 所以结果如图 表现如下 渲染过程 svg的viewport 宽高依然是800和600 viewbox的宽高比变成0 0 400 300 这里的一步首先是确定用户坐标,因为设置的用户坐标是400 * 300 ,但是实际的viewport是800和600,所以对应起来就是用户坐标的1像素对应viewport的二像素 所以 当绘制图像的时候,原来在用户坐标100, 100的点,在viewbox 是 0 0 800 600的时候,对应的viewport的物理像素是100,100的点,但是到了viewbox是 0 0 400 300的时候,用户坐标100, 100的点,对应的物理像素变成了200, 200的点了,所以整个图像变大了 这里注意的是绘制图像的坐标始终是没有变,原来是100,100 还是100,100,变化的是用户坐标到svg的viewport的转换变化了。 上面介绍了viewbox的width和height,在宽高比和viewport相同的时候的情况,现在介绍还是在宽高比和viewport相同的时候的情况下,设置viewbox的x和y是如何变化的。 其实原理是一样的,还是分成两个步骤 a, 首先设置用户坐标,也就是用户坐标到svg viewport的转换关系, b, 绘制图像 表现如下 可以看到图像向左移动了150px 原理还是按照上面的两步 1, 首先设置用户坐标,这里是svg的是800 : 600 ,而viewbox的也是800:600 所以这里是用户坐标到实际是1:1,然后因为设置了viewBox 的x是150,所以这里的用户坐标会向左移动150,所以原来绘制在用户坐标范围从(0, 0)到(150,0)的就无法显示出来了。 当宽高不相同的时候,就首先得有个标准,也就是根据什么来设置用户坐标到viewport的转换,也就是preserveAspectRatio 这个说半天也不好理解,不如直接看实际的效果图 https://www.sarasoueidan.com/demos/interactive-svg-coordinate-system/index.html 这里可以直接设置,然后查看效果 不过把握大方向 就是先设置用户坐标,再绘图即可。 参考: https://pjchender.blogspot.com/2017/03/svg.html
2023-08-18 01:38:491

OpenGL之Viewport

1.1 窗口(Screen) 窗口其实就是屏幕,如下图1中红色圈中黑色背景的部分。所有的场景最终都是要被光栅化乘显示器上的图像,屏幕是所有场景(2D、3D等)的最终输出目的地。一个screen可以显示多个视口中的内容; 1.2 视口(Viewport) 视口就是窗口中用来显示图形的一块矩形区域,它可以和窗口等大,也可以比窗口大或者小,如图1中蓝色标示的绿色背景的区域。它具有两个意义:   u2022 定义了视镜体中的景物要被绘制到一张什么尺寸的画布之上;   u2022 定义了画布在屏幕的什么区域; 显然,如果 视景体的投影平面 定义的宽高比和 视口 所定义的宽高比 不相同 的话,那么将视景体中的物体绘制到画布上的时候会进行 拉伸或者压缩 ;而当视景体投影平面的宽高比和视口所定义的宽高比一致的时候,图像将会不进行任何缩放绘制到视口所定义的画布之上。 在实际应用中,一个窗口中会绘制多个3D场景,这个通过定义多个视口,绘制多个图像,然后 贴在 屏幕的不同区域即可。比如图中黄色笔圈中的区域,在画布中定于两个不同的viewport1 (0,0;w/2,y)和 viewport2 (0,w/2;w/2,y); 1.4 视镜体(View Frustum) 视景体(View Volume)定义了我们能够通过虚拟的3D摄像机所能看到的场景。在一个3D场景中站立中,需要摄像机的 摆放位置 和 视野 来定义我们所能够看到的东西,而这个视野就是通过视景体来定义的。在3D中,一般可以通过以下两种方式来定义视景体: 通过前面的介绍,我们大致的了解了这三个不同东西的概念。从中我们可以知道,通过定义投影矩阵,我们实际上是在虚拟的3D空间中,创建了一个视野,也就是视景体。在接着,我们通过定义视口,来描述视景体中的内容如何映射到一个虚拟的画布之上,并且这个画布最终将显示在屏幕上的什么位置。当所有的这些都设置完毕,我们绘制完毕场景之后,就能够通过硬件在我们的显示器屏幕上看到最终的画面。更理论的表述就是,通过定义投影矩阵,将3D场景投影到一个投影平面之上。通过定义视口,我们将投影平面上的内容映射到这个视口中去,并且填满它,同时根据定义视口是给定的屏幕坐标的位置,将这个视口中的图像映射到窗口的指定位置之上,最终我们就看到了图像。 glViewport是OpenGL中的一个函数。计算机图形学中,在屏幕上打开窗口的任务是由窗口系统,而不是OpenGL负责的。glViewport在默认情况下,视口被设置为占据打开窗口的整个像素矩形,如图1,窗口大小和设置视口大小相同,所以为了选择一个更小的绘图区域,就可以用glViewport函数来实现这一变换,在窗口中定义一个像素矩形,最终将图像映射到这个矩形中。例如可以对窗口区域进行划分,在同一个窗口中显示分割屏幕的效果,以显示多个视图。
2023-08-18 01:38:561

UE4 创建Viewport

创建自定义的 ViewportClient ,并显示 TextureRenderTarget2D 对象。设置蓝色背景。 在 ViewportClient::Draw(FViewport* Viewport,FCanvas* Canvas) 中进行绘制。 绘制RenderTarget相当于绘制“栅格图像”。 绘制一段线。 创建 Standalone Window 插件来显示 Viewport 。PluginsTPViewportSourceTPViewportPublicRenderTestViewportClient.cpp PluginsTPViewportSourceTPViewportPublicTPViewport.h 三者之间的关系 ViewportWidget--->FSceneViewport---->FViewportClient PluginsTPViewportSourceTPViewportPublicTPViewport.cpp 创建 SDockTab 。 UE4 创建Viewport
2023-08-18 01:39:041

meta name="viewport" content="width=device-width, initial-scale=1.0"

这是 HTML 里 的 <META> 标签。 它是 <HEAD> 标签 里的一部分。<META> 标签 里 含 “名字 与 数据 ”对子(pairs)这里 的 名字 是 viewport (显示窗口)数据 是 文本 内容 content="width=device-width, initial-scale=1.0"也就是 显示窗口 宽度 是 客户端的 屏幕 宽度 (就是 满屏 !),显示的文字和图形的初始比例 是 1.0例如 字体 16,像素 16, 图宽 640 pix, 显示 宽度 就 是 640 像素。
2023-08-18 01:39:351

QPainter的Window和viewPort到底是什么东西

window()返回的是作为窗口框架的一个widget, 也许是用来承载当前widget的窗口, 如果当前widget本身是个单独的窗口框架的话, 返回的会是它自身~`` 例如QWidget、QDialog、QLabel....而viewPort()返回的好比像MFC中单文档那个工作区一样, 一般像QTextEdit、QTableWidget....返回它们的可编辑区域的widget~`` 这也是为什么有时单纯想通过重载paintEvent()在这类widget中绘制一些图形时不显示的原因 :)
2023-08-18 01:39:512

手机端怎么通过js设置viewport

1、跨浏览器的写法如下:利用 @media (width) 和@media (height) 的值来指定对应的viewpoint,示例代码如下:var w=Math.max(document.documentElement.clientWidth, window.innerWidth ||0);var h=Math.max(document.documentElement.clientHeight, window.innerHeight ||0);2、一般方法是利用window.innerWidth和window.innerHeight来指定:获取窗口的高度与宽度(不包含工具条与滚动条):var w=window.innerWidth;var h=window.innerHeight;完整代码:function myFunction(){var w=window.innerWidth;var h=window.innerHeight;x=document.getElementById("demo");x.innerHTML="Width: " + w + " Heigth: " + h;}
2023-08-18 01:40:002

3DMAX里VIEWPORT显示的物体表面有很多碎片,怎么解决.

不是你的显卡问题,是你在3d中软件的布尔操作可能错误.布尔差集的时候,你应该先把要减去的物体连接为一个物体.然后再布尔. 要么就是你布尔减去了一个后要先退出,(布尔按钮要弹起来),然后再重复上一步的动作.这样可避免破面出现的可能.你试试看.
2023-08-18 01:40:282

"screen""关键字是匹配设备的物理屏幕还是浏览器的viewport

"screen""关键字是匹配设备的物理屏幕还是浏览器的viewport在显示面积上手机屏幕相对桌面显示器要小很多,在几年前(现在也如此)大部分网站都是为桌面显示器浏览而设计,很少考虑到适应手机屏幕,所以如果用手机浏 览大多网站时会出现问题,比如常见固定宽度的网页会出现横向竖向滑动条,当然这不算什么大问题;但如果是浏览流动布局的网页那情况会非常糟糕,设想一个宽 度为30%的侧边栏对于320px手机屏幕而言也就96px,只能容纳8个12px的汉字,可阅读性非常差。为了让手机也能获得良好的网页浏览体验,Apple找到了一个办法:在移动版(iOS)的Safari中定义了viewport meta标签①,它的作用就是创建一个虚拟的窗口(viewport),而且这个虚拟窗口的分辨率接近于桌面显示器,Apple将其定位为980px②。
2023-08-18 01:40:371

vant+postcss-px-to-viewport 记一次移动端网页适配之旅

本次的需求其实很简单,即为公司制作一个可以在微信公众号上使用的网页,但是由于自己对移动端组件以及很多东西不熟悉,踩了很多坑。 一开始直接动手写乃至用element,完全达不到合格的美观程度,缩放element-ui元素很困难(在被科普了vant这样的移动端ui之后才知道这是一种愚蠢的行为),于是终于操起vant vant很好用,但是把vant组件直接放在页面上遇到一个直接问题:太小了,同样尝试了一下缩放组件,但是这个操作工程量大且不一定美观,于是研究了一番发现:vant是按照375px的设计稿写的,其css大多单位是px,这能直接用就怪了,咨询了一波公司的前辈,得知他是把vant css中的px替换为rem来操作的,于是我打开css直接CTRL+F px转rem,当然两者有16倍关系我还是懂的,于是采取了根元素 我屏幕宽为1080px,将元素长度宽度除16再乘(1080/375)可让vant元素刚好填满我的屏幕,当然对于别的屏宽就暂时顾不了了,但是毕竟可用@media and screen来解决吗。 实践结果是,vantage元素合适地填满了我的chrome,填满了我的手机屏,却在微信处翻了车,一个复选框的边框厚得像门一样,此处图和原因再补。 发现这种方法没办法达成对微信的适配后,我转向了插件,起初使用的是postcss-pxtorem,其自动将css中的px转为rem,但这种方法还要搭配 lib-flexible 食用,而该库的作者这样告诉我们:有了viewport适配,我们已经退出历史舞台了。毕竟用一个库总比用两个方便,而且人家库作者都这么说了,便安装postcss-px-to-viewport,中间踏了点webpack的坑,但是postcss-px-to-viewport正常工作后效果拔群,一步完成适配,也不用去想@media and screen了。 关于px转rem与viewport,具体方案见 https://sunniejs.github.io/vue-h5-template/#/zh-cn/rem
2023-08-18 01:40:451

我写了一个html网页,添加了后就

我查了下viewport,有几个属性:width - viewport的宽度 height - viewport的高度initial-scale - 初始的缩放比例minimum-scale - 允许用户缩放到的最小比例maximum-scale - 允许用户缩放到的最大比例user-scalable - 用户是否可以手动缩放估计是本身页面尺寸就是那么大吧【本人还没开始接触手机WEB前端,请恕我见识短浅
2023-08-18 01:40:541

为什么viewport的width=device-width,加上去没效果

我查了下viewport,有几个属性:width - viewport的宽度 height - viewport的高度initial-scale - 初始的缩放比例minimum-scale - 允许用户缩放到的最小比例maximum-scale - 允许用户缩放到的最大比例user-scalable - 用户是否可以手动缩放估计是本身页面尺寸就是那么大吧【本人还没开始接触手机WEB前端,请恕我见识短浅
2023-08-18 01:41:101

html的标签,中,content属性的作用

一个常用的针对移动网页优化过的页面的 viewport meta 标签大致如下:<meta name="viewport" content="width=device-width, initial-scale=1.0">width:控制 viewport 的大小,可以指定的一个值,如果 600,或者特殊的值,如 device-width 为设备的宽度(单位为缩放为 100% 时的 CSS 的像素)。height:和 width 相对应,指定高度。initial-scale:初始缩放比例,也即是当页面第一次 load 的时候缩放比例。maximum-scale:允许用户缩放到的最大比例。minimum-scale:允许用户缩放到的最小比例。user-scalable:用户是否可以手动缩放。
2023-08-18 01:41:191

html 手机 微信 网页 meta name="viewport" content="width=600" 无效

 默认情况下,iPhone上的Safari会象在大屏幕的桌面浏览器那样显示你的页面,宽度达到了980像素,然后缩小内容以适应iPhone的小屏幕,因此用户在iPhone看这个页面时感觉字体就比较小了,也比较模糊,必须要放大才能看得真切,对于一个普通的Web页面似乎可以接受,但对于一个常用的应用程序就没几个人能够受得了。
2023-08-18 01:41:272

maya2013 Viewport 2.0能打开用不了

那是你的显卡低了点吧。Viewpot2.0是硬件显示实时效果。显卡如果不够强大是很容易卡死的。建议对自己硬件不够信心的还是少开Viewport为妙啊。他可能比高显对硬件的要求还要高。可以渲染试试,或是高显看看。
2023-08-18 01:41:351

iphone6s 在看网页时为什么缩放不了

两方面1、设置问题或使用问题,解决方法:缩放的大小是可以自己控制的, 可以拖动以控制缩放的大小,从左上下右下拖动可以缩小,从右下向左上拖动可以放大。 设置里面,通用-辅助功能-(第二个)缩放,然后你就会看到了。2、网页本身已规定不允许缩放 详见viewport;通俗的讲,移动设备上的viewport就是设备的屏幕上能用来显示我们的网页的那一块区域,在具体一点,就是浏览器上(也可能是一个app中的webview)用来显示网页的那部分区域,但viewport又不局限于浏览器可视区域的大小,它可能比浏览器的可视区域要大,也可能比浏览器的可视区域要小。在默认情况下,一般来讲,移动设备上的viewport都是要大于浏览器可视区域的,这是因为考虑到移动设备的分辨率相对于桌面电脑来说都比较小,所以为了能在移动设备上正常显示那些传统的为桌面浏览器设计的网站,移动设备上的浏览器都会把自己默认的viewport设为980px或1024px(也可能是其它值,这个是由设备自己决定的),但带来的后果就是浏览器会出现横向滚动条,因为浏览器可视区域的宽度是比这个默认的viewport的宽度要小的。下图列出了一些设备上浏览器的默认viewport的宽度。更多 https://www.baidu.com/s?wd=viewport&rsv_spt=1&rsv_iqid=0xa01011da00045205&issp=1&f=8&rsv_bp=0&rsv_idx=2&ie=utf-8&tn=baiduhome_pg&rsv_enter=1&rsv_sug3=8&rsv_sug1=8
2023-08-18 01:41:443

网页要让它自适应各种手机屏幕宽度大小要怎么设置?

auto
2023-08-18 01:42:243

dreamweaver中怎么让网页自适屏幕,达到满屏效果

采用table来分配布局 最外层的table宽度设置为100%或者96% 麻烦采纳,谢谢!
2023-08-18 01:42:335

恩是的 一般用于iphone 开发
2023-08-18 01:42:502

想请问,iOS10网页viewport怎么禁止缩放

禁用双指缩放:document.documentElement.addEventListener("touchstart", function (event) { if (event.touches.length > 1) { event.preventDefault(); }}, false);禁用手指双击缩放:var lastTouchEnd = 0;document.documentElement.addEventListener("touchend", function (event) { var now = Date.now(); if (now - lastTouchEnd <= 300) { event.preventDefault(); } lastTouchEnd = now;}, false);试验过了,确实可行,但是不确定会不会造成其他影响。
2023-08-18 01:42:591

什么
2023-08-18 01:43:092

ext中viewport问题?分三部分top west center其中west是菜单树,点击菜单会在center中显示其主要内容。。

<%@ Register Assembly="Coolite.Ext.Web" Namespace="Coolite.Ext.Web" TagPrefix="ext" %><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml" ><head runat="server"> <title></title> <script type="text/javascript"> function GetTree(node) { var eIdtd = document.getElementById("txtTitle"); var enumPare = document.getElementById("txtContent"); eIdtd.innerHTML ="编号:"+ node.id; enumPare.innerHTML ="内容:"+ node.text; } </script> </head><body> <form id="form1" runat="server"> <div> <ext:ScriptManager ID="ScriptManager1" runat="server"> </ext:ScriptManager> <ext:ViewPort ID="ViewPort1" runat="server"> <Body> <ext:BorderLayout ID="BorderLayout1" runat="server"> <North MarginsSummary="5 5 5 5"> <ext:Panel AllowDomMove="true" ID="Paneles" Height="250" runat="server" Title="top" Icon="Information" Header="true" Collapsed="true" Collapsible="true"> <Body> <div style="float:left; white-space:normal; padding-left:5px; width:50%; vertical-align:middle; "><p> 导航:这是上边! </p></div> </Body> </ext:Panel> </North> <West MinWidth="225" MaxWidth="400" Collapsible="true" Split="true" MarginsSummary="0 0 0 0" CMarginsSummary="0 0 0 0"> <ext:TreePanel ID="treePark" Header="false" Frame="false" Title="Tree" Width="300" Lines="false" BodyBorder="false" RootVisible="false" runat="server"> <Root> <ext:TreeNode Text="Composers" Expanded="true"> <Nodes> <ext:TreeNode Text="Beethoven" Icon="UserGray"> <Nodes> <ext:TreeNode Text="Concertos"> <Nodes> <ext:TreeNode NodeID="1" Text="No. 1 - C" Icon="Music" /> <ext:TreeNode NodeID="2" Text="No. 2 - B-Flat Major" Icon="Music" /> <ext:TreeNode NodeID="3" Text="No. 3 - C Minor" Icon="Music" /> <ext:TreeNode NodeID="4" Text="No. 4 - G Major" Icon="Music" /> <ext:TreeNode NodeID="5" Text="No. 5 - E-Flat Major" Icon="Music" /> </Nodes> </ext:TreeNode> <ext:TreeNode Text="Quartets" > <Nodes> <ext:TreeNode NodeID="6" Text="Six String Quartets" Icon="Music" /> <ext:TreeNode NodeID="7" Text="Three String Quartets" Icon="Music" /> <ext:TreeNode NodeID="8" Text="Grosse Fugue for String Quartets" Icon="Music" /> </Nodes> </ext:TreeNode> <ext:TreeNode Text="Sonatas" > <Nodes> <ext:TreeNode Text="Sonata in A Minor" Icon="Music" /> <ext:TreeNode Text="sonata in F Major" Icon="Music" /> </Nodes> </ext:TreeNode> </Nodes> </ext:TreeNode> </Nodes> </ext:TreeNode> </Root> <Listeners> <Click Handler="Javascript:GetTree(node);" /> </Listeners> </ext:TreePanel> </West> <Center> <ext:Panel ID="panel1" Height="500px" BodyBorder="false" Frame="false" AutoScroll="true" runat="server"> <Body> <table cellpadding="0" cellspacing="0" width="98%" border="0"> <tr> <td height="20" colspan="2" > <span style=" font-size:xx-large; text-align:center "> 这是中间部位 </span> </td> </tr> <tr> <td width="20" height="20" rowspan="2" align="center" valign="top"> </td> <td style="height: 50px; vertical-align: bottom; overflow: scroll;" align="center"> <asp:Label ID="txtTitle" runat="server"></asp:Label> </td> </tr> <tr> <td align="left" id="txtContent1"> <asp:Label ID="txtContent" runat="server"></asp:Label> </td> </tr> </table> </Body> </ext:Panel> </Center> </ext:BorderLayout> </body> </ext:ViewPort> </div> </form></body></html>这个直接建一个页面,粘贴进去就可以用了!
2023-08-18 01:43:161

WPF中,当Viewport2DVisual3D.Camera使用动画时为什么是冻结的

当你动画化Viewport2DVisual3D对象的“照像机”属性时,你会得到一个“错误操作异常”:冻结的对象不能被冻结“。  Freezable对象在有些情况下比如设置在样式中时会被冻结,有关Freezable对象,请参照以下MSDN的相关文档:  http://msdn.microsoft.com/en-us/library/ms750509.aspx  这里的原因就是WPF不会冻结Viewport2DVisual3D对象,WPF所做的就是制作一个“camera “冻结的副本并把它分配给对应的转换(underlying transformation),这些转换会在点击测试机制中取消Viewport2DVisual3D对象的点击性能,从而使其不能与用户交互。
2023-08-18 01:43:241

maya怎么解决蒙皮变形问题

刷权重
2023-08-18 01:43:322

Meta定义的有关视口viewport,下列说法不正确的是()。

Meta定义的有关视口viewport,下列说法不正确的是()。 A.width:宽度,一般设为900px。 B.height:和width相对应,指定高度。 C.initial-scale:初始缩放比例,也即是当页面第一次load的时候缩放比例。 D.maximum-scale:允许用户缩放到的最大比例。minimum-scale:允许用户缩放到的最小比例。 正确答案:A
2023-08-18 01:44:191

iOS11 Web 适配 viewport-fit=cover

https://ayogo.com/blog/ios11-viewport/ https://www.daier.org/124930.html https://stackoverflow.com/questions/45662388/ios-11-uiwebview-pop-down-by-status-bar
2023-08-18 01:44:261

如何设计自适应屏幕大小的网页 Responsive Web Design

手机的屏幕比较小,宽度通常在600像素以下;PC的屏幕宽度,一般都在1000像素以上(目前主流宽度是1366×768),有的还达到了2000像素。同样的内容,要在大小迥异的屏幕上,都呈现出满意的效果,并不是一件容易的事。很多网站的解决方法,是为不同的设备提供不同的网页,比如专门提供一个mobile版本,或者iPhone / iPad版本。这样做固然保证了效果,但是比较麻烦,同时要维护好几个版本,而且如果一个网站有多个portal(入口),会大大增加架构设计的复杂度。于是,很早就有人设想,能不能”一次设计,普遍适用”,让同一张网页自动适应不同大小的屏幕,根据屏幕宽度,自动调整布局(layout)?如何设计自适应屏幕大小的网页(转)一、”自适应网页设计”的概念2010年,Ethan Marcotte提出了”自适应网页设计”(Responsive Web Design)这个名词,指可以自动识别屏幕宽度、并做出相应调整的网页设计。他制作了一个范例,里面是《福尔摩斯历险记》六个主人公的头像。如果屏幕宽度大于1300像素,则6张图片并排在一行。如何设计自适应屏幕大小的网页(转)如果屏幕宽度在600像素到1300像素之间,则6张图片分成两行。如何设计自适应屏幕大小的网页(转)如果屏幕宽度在400像素到600像素之间,则导航栏移到网页头部。如何设计自适应屏幕大小的网页(转)如果屏幕宽度在400像素以下,则6张图片分成三行。如何设计自适应屏幕大小的网页(转)mediaqueri.es上面有更多这样的例子。这里还有一个测试小工具,可以在一张网页上,同时显示不同分辨率屏幕的测试效果,我推荐安装。二、允许网页宽度自动调整“自适应网页设计”到底是怎么做到的?其实并不难。首先,在网页代码的头部,加入一行viewport元标签。viewport是网页默认的宽度和高度,上面这行代码的意思是,网页宽度默认等于屏幕宽度(width=device-width),原始缩放比例(initial-scale=1)为1.0,即网页初始大小占屏幕面积的100%。所有主流浏览器都支持这个设置,包括IE9。对于那些老式浏览器(主要是IE6、7、8),需要使用css3-mediaqueries.js。“自适应网页设计”到底是怎么做到的?其实并不难。首先,在网页代码的头部,加入一行viewport元标签。<meta name=”viewport” content=”width=device-width, initial-scale=1″ />viewport是网页默认的宽度和高度,上面这行代码的意思是,网页宽度默认等于屏幕宽度(width=device-width),原始缩放比例(initial-scale=1)为1.0,即网页初始大小占屏幕面积的100%。所有主流浏览器都支持这个设置,包括IE9。对于那些老式浏览器(主要是IE6、7、8),需要使用css3-mediaqueries.js。
2023-08-18 01:44:341

网站怎么做到自适应网页?

关于网站如何做到自适应网页,可根据如下操作:首先,在网页代码的头部,加入一行viewport元标签。viewport是网页默认的宽度和高度,上面这行代码的意思是,网页宽度默认等于屏幕宽度(width=device-width),原始缩 放比例(initial-scale=1)为1.0,即网页初始大小占屏幕面积的100%。由于网页会根据屏幕宽度调整布局,所以不能使用绝对宽度的布局,也不能使用具有绝对宽度的元素。这一条非常重要。“流动布局”的含义是,各个区块的位置都是浮动的,不是固定不变的。float的好处是,如果宽度太小,放不下两个元素,后面的元素会自动滚动到前面元素的下方,不会在水平方向overflow(溢出),避免了水平滚动条的出现。“自适应网页设计”的核心,就是CSS3引入的Media Query模块。它的意思就是,自动探测屏幕宽度,然后加载相应的CSS文件。同一个CSS文件中,也可以根据不同的屏幕分辨率,选择应用不同的CSS规则。其次,除了布局和文本,”自适应网页设计”还必须实现图片的自动缩放。有条件的话,最好还是根据不同大小的屏幕,加载不同分辨率的图片。有很多方法可以做到这一条,服务器端和客户端都可以实现。
2023-08-18 01:44:421

android webview怎么设置缩放

Android:WebView如何设定支持缩放:需要对WebView和WebSettings做一下设定webview.setVerticalScrollbarOverlay(true); //指定的垂直滚动条有叠加样式WebSettings settings = webview.getSettings();settings.setUseWideViewPort(true);//设定支持viewportsettings.setLoadWithOverviewMode(true);settings.setBuiltInZoomControls(true);settings.setSupportZoom(true);//设定支持缩放 html界面meta标签<metaname="viewport"content="height= [pixel_value| "device-height"] ,width= [pixel_value| "device-width"] ,initial-scale=float_value,//初始缩放minimum-scale=float_value,//最小maximum-scale=float_value,//最大user-scalable= ["yes" | "no"]//是否允许用户对页面缩放 "/>例如:<meta name="viewport" content="width=device-width,user-scalable=yes initial-scale=1.0, maximum-scale=2.0">-->设定支持缩放,最大两倍缩放
2023-08-18 01:44:521

如何去设计一个自适应的网页设计或html5

如今移动互联网随着3G的普及,越来越火爆,更多需求跟随而来!APP应用市场和APP应用数量成倍成倍的增长!从而给移动互联网带来新的挑战!移动设备正超过桌面设备,成为访问互联网的最常见终端。于是,网页设计师不得不面对一个难题:如何才能在不同大小的设备上呈现同样的网页?手机的屏幕比较小,宽度通常在600像素以下;PC的屏幕宽度,一般都在1000像素以上(目前主流宽度是1366×768),有的还达到了2000像素。同样的内容,要在大小迥异的屏幕上,都呈现出满意的效果,并不是一件容易的事。很多网站的解决方法,是为不同的设备提供不同的网页,比如专门提供一个mobile版本,或者iPhone / iPad版本。这样做固然保证了效果,但是比较麻烦,同时要维护好几个版本,而且如果一个网站有多个portal(入口),会大大增加架构设计的复杂度。于是,很早就有人设想,能不能”一次设计,普遍适用”,让同一张网页自动适应不同大小的屏幕,根据屏幕宽度,自动调整布局(layout)?一、了解什么是”自适应网页设计”自从2010年,Ethan Marcotte提出了 “自适应网页设计”(Responsive Web Design)这个名词,指可以自动识别屏幕宽度、并做出相应调整的网页设计。他制作了一个 范例,里面是《福尔摩斯历险记》六个主人公的头像。如果屏幕宽度大于1300像素,则6张图片并排在一行。如果屏幕宽度在600像素到1300像素之间,则6张图片分成两行。如果屏幕宽度在400像素到600像素之间,则导航栏移到网页头部。如果屏幕宽度在400像素以下,则6张图片分成三行。mediaqueri.es上面有更多这样的例子。这里还有一个 测试小工具,可以在一张网页上,同时显示不同分辨率屏幕的测试效果,我推荐安装。二、需要允许网页宽度自动调整“自适应网页设计”到底是怎么做到的?其实并不难。首先,在网页代码的头部,加入一行 viewport元标签。viewport是网页默认的宽度和高度,上面这行代码的意思是,网页宽度默认等于屏幕宽度(width=device-width),原始缩放比例(initial-scale=1)为1.0,即网页初始大小占屏幕面积的100%。所有主流浏览器都支持这个设置,包括IE9。对于那些老式浏览器(主要是IE6、7、8),需要使用 css3-mediaqueries.js。三、在进行设计的时候不能使用绝对宽度由于网页会根据屏幕宽度调整布局,所以不能使用绝对宽度的布局,也不能使用具有绝对宽度的元素。这一条非常重要。具体说,CSS代码不能指定像素宽度:width:xxx px;只能指定百分比宽度:width: xx%;或者width:auto;四、相对大小的字体字体也不能使用绝对大小(px),而只能使用相对大小(em)。body {font: normal 100% Helvetica, Arial, sans-serif;}上面的代码指定,字体大小是页面默认大小的100%,即16像素。h1 {font-size: 1.5em;}然后,h1的大小是默认大小的1.5倍,即24像素(24/16=1.5)。small {font-size: 0.875em;}small元素的大小是默认大小的0.875倍,即14像素(14/16=0.875)。五、流动布局(fluid grid)或瀑布流“流动布局”的含义是,各个区块的位置都是浮动的,不是固定不变的。.main {float: right;width: 70%;}.leftBar {float: left;width: 25%;}float的好处是,如果宽度太小,放不下两个元素,后面的元素会自动滚动到前面元素的下方,不会在水平方向overflow(溢出),避免了水平滚动条的出现。另外,绝对定位(position: absolute)的使用,也要非常小心。六、选择性加载CSS“自适应网页设计”的核心,就是CSS3引入的 Media Query模块。它的意思就是,自动探测屏幕宽度,然后加载相应的CSS文件。上面的代码意思是,如果屏幕宽度小于400像素(max-device-width: 400px),就加载tinyScreen.css文件。如果屏幕宽度在400像素到600像素之间,则加载smallScreen.css文件。除了用html标签加载CSS文件,还可以在现有CSS文件中加载。@import url(“tinyScreen.css”) screen and (max-device-width: 400px);七、CSS的@media规则同一个CSS文件中,也可以根据不同的屏幕分辨率,选择应用不同的CSS规则。@media screen and (max-device-width: 400px) {.column {float: none;width:auto;}#sidebar {display:none;}}上面的代码意思是,如果屏幕宽度小于400像素,则column块取消浮动(float:none)、宽度自动调节(width:auto),sidebar块不显示(display:none)。八、图片的自适应(fluid image)除了布局和文本,”自适应网页设计”还必须实现图片的 自动缩放。这只要一行CSS代码:img { max-width: 100%;}这行代码对于大多数嵌入网页的视频也有效,所以可以写成:img, object { max-width: 100%;}老版本的IE不支持max-width,所以只好写成:img { width: 100%; }此外,windows平台缩放图片时,可能出现图像失真现象。这时,可以尝试使用IE的 专有命令:img { -ms-interpolation-mode: bicubic; }或者,Ethan Marcotte的 imgSizer.js。addLoadEvent(function() {var imgs = document.getElementByIdx_x(“content”).getElementsByTagName_r(“img”);imgSizer.collate(imgs);});不过,有条件的话,最好还是根据不同大小的屏幕,加载不同分辨率的图片。有 很多方法可以做到这一条,服务器端和客户端都可以实现。只要遵循这8条设计准则,我相信你们可以很快的设计出自适应的网页出来
2023-08-18 01:45:023

CSS 命令 微信公众平台 自适应屏幕大小

显示为铺满一排,也要看你的字数多少。如果你是想要文字根据屏幕大小改变,那你可以用这个单位。例子:font-size:3.6vmin;
2023-08-18 01:45:122

怎么把一个pc页面自适应手机屏幕,自适应手机屏幕网站怎么做吗

无论是电脑还是手机,要做到自适应屏幕,其实都是一样的。首先,在网页代码的头部,加入一行viewport标签<metaname="viewport"content="width=device-width,initial-scale=1.0,maximum-scale=1.0,minimum-scale=1.0,user-scalable=no"/>viewport是网页默认的宽度和高度,上面这行代码的意思是,网页宽度默认等于屏幕宽度(width=device-width),原始缩放比例(initial-scale=1)为1.0,即网页初始大小占屏幕面积的100%。即让viewport的宽度等于物理设备上的真实分辨率,不允许用户缩放。其次:网页宽度css一定要使用百分比width:xx%;,不能用绝对像素。当然可以用width:auto;第三,流动布局.left{float:left;width:***%;}第四,选择加载css这是自适应的关键部分.abc{height:300px;border:1pxsolid000;margin:0auto}@mediascreenand(min-width:1201px){.abc{width:1200px}}/*设置了浏览器宽度不小于1201px时abc显示1200px宽度*/@mediascreenand(max-width:1200px){.abc{width:900px}}/*设置了浏览器宽度不大于1200px时abc显示900px宽度*/@mediascreenand(max-width:901px){.abc{width:200px;}}/*设置了浏览器宽度不大于901px时abc显示200px宽度*/@mediascreenand(max-width:500px){.abc{width:100px;}}/*设置了浏览器宽度不大于500px时abc显示100px宽度*/需要注意是CSS代码顺序,由大到小排版CSS(判断浏览器宽度越大越放前),这样是因为逻辑关系,@media判断CSS排错将导致判断失效。第四,图片自适应img{max-width:100%;}老版本的IE不支持max-width,所以只好写成:img{width:100%;}筚五、采用相对字体大小字体也不能使用绝对大小(px),而只能使用相对大小(em)。这里最重要的,是第三条和第四条,也就是采用流动布局和css选择加载。祝你好运!
2023-08-18 01:45:201

如何设计自适应屏幕大小的网页 Responsive Web Design

手机的屏幕比较小,宽度通常在600像素以下;PC的屏幕宽度,一般都在1000像素以上(目前主流宽度是1366×768),有的还达到了2000像素。同样的内容,要在大小迥异的屏幕上,都呈现出满意的效果,并不是一件容易的事。很多网站的解决方法,是为不同的设备提供不同的网页,比如专门提供一个mobile版本,或者iPhone/iPad版本。这样做固然保证了效果,但是比较麻烦,同时要维护好几个版本,而且如果一个网站有多个portal(入口),会大大增加架构设计的复杂度。于是,很早就有人设想,能不能”一次设计,普遍适用”,让同一张网页自动适应不同大小的屏幕,根据屏幕宽度,自动调整布局(layout)?如何设计自适应屏幕大小的网页(转)一、”自适应网页设计”的概念2010年,EthanMarcotte提出了”自适应网页设计”(ResponsiveWebDesign)这个名词,指可以自动识别屏幕宽度、并做出相应调整的网页设计。他制作了一个范例,里面是《福尔摩斯历险记》六个主人公的头像。如果屏幕宽度大于1300像素,则6张图片并排在一行。如何设计自适应屏幕大小的网页(转)如果屏幕宽度在600像素到1300像素之间,则6张图片分成两行。如何设计自适应屏幕大小的网页(转)如果屏幕宽度在400像素到600像素之间,则导航栏移到网页头部。如何设计自适应屏幕大小的网页(转)如果屏幕宽度在400像素以下,则6张图片分成三行。如何设计自适应屏幕大小的网页(转)mediaqueri.es上面有更多这样的例子。这里还有一个测试小工具,可以在一张网页上,同时显示不同分辨率屏幕的测试效果,我推荐安装。二、允许网页宽度自动调整“自适应网页设计”到底是怎么做到的?其实并不难。首先,在网页代码的头部,加入一行viewport元标签。viewport是网页默认的宽度和高度,上面这行代码的意思是,网页宽度默认等于屏幕宽度(width=device-width),原始缩放比例(initial-scale=1)为1.0,即网页初始大小占屏幕面积的100%。所有主流浏览器都支持这个设置,包括IE9。对于那些老式浏览器(主要是IE6、7、8),需要使用css3-mediaqueries.js。“自适应网页设计”到底是怎么做到的?其实并不难。首先,在网页代码的头部,加入一行viewport元标签。<metaname=”viewport”content=”width=device-width,initial-scale=1″/>viewport是网页默认的宽度和高度,上面这行代码的意思是,网页宽度默认等于屏幕宽度(width=device-width),原始缩放比例(initial-scale=1)为1.0,即网页初始大小占屏幕面积的100%。所有主流浏览器都支持这个设置,包括IE9。对于那些老式浏览器(主要是IE6、7、8),需要使用css3-mediaqueries.js。
2023-08-18 01:45:271

打开maya2015后,软件提示找不到适当的起始摄影机咋办

DirectX 11 Shader 节点的属性,指定了 MayaUberShader 着色器文件。要使用该着色器,您必须在 Viewport 2.0 的 DirectX 11 环境中工作,并启用 dx11shader.mll 插件。有关详细信息。您可以在 Hypershade 创建栏中找到 DirectX 11 Shader。创建着色器后,会自动加载 MayaUberShader.fx 文件。dx11Shader.mll 插件可使您在 Maya Viewport 2.0 中加载并查看自己的 HLSL 着色器。使用 Hypershade 创建 DirectX 11 shader 时,会自动连接 MayaUberShader.fxo 文件;但是,您也可以改为加载自定义 HLSL 着色器。此外,<maya directory>presetsHLSL11examples 中提供了其他示例 HLSL 着色器。选择 DirectX 作为渲染引擎(方法 1)选择“窗口 > 设置/首选项 > 首选项 > 显示”(Window > Settings/Preferences > Preferences > Display)并将“渲染引擎”(Rendering engine)设置为“DirectX 11”。重要信息若要使用 DirectX 渲染引擎,您必须使用 64 位的 Windows 和可兼容 DirectX 11 的显卡。在面板菜单中选择“渲染器 > Viewport 2.0”(Renderer > Viewport 2.0)将工作区切换到 Viewport 2.0。注意您的工作区平视显示仪现在应指示 Viewport 2.0 (DirectX 11)。选择“窗口 > 设置/首选项 > 插件管理器”(Window > Settings/Preferences > Plug-in Manager)并加载 dx11Shader.mll 插件。选择 DirectX 作为渲染引擎(方法 2)此环境变量将覆盖交互式和批处理会话的用户首选项(“窗口 > 设置/首选项 > 首选项 > 显示”(Window > Settings/Preferences > Preferences > Display))(使用 -hw2 选项)。将 MAYA_VP2_DEVICE_OVERRIDE 设置为 VirtualDeviceDx11 可在 Viewport 2.0 中渲染时始终使用 DirectX 11。提示将此环境变量设置为 VirtualDeviceGL 可在 Viewport 2.0 中渲染时始终使用 OpenGL。注意取消设置该环境变量可再次使用用户首选项来选择渲染引擎。创建 DirectX 着色器选择“窗口 > 渲染编辑器 > Hypershade”(Window > Rendering Editors > Hypershade),以打开“Hypershade”窗口。在“创建”(Create)栏中,选择“Maya > 曲面 > DirectX 11 Shader”(Maya > Surface > DirectX 11 Shader)。将创建 DirectX 11 Shader,同时自动加载 MayaUberShader.fx。按 6 以获得纹理模式,按 7 以使用场景照明。提示纹理和非纹理模式均受支持,且所有灯光模式(“使用所有灯光”(Use All Lights)、“使用选定灯光”(Use Selected Lights)、“不使用灯光”(Use No Lights)和“使用默认照明”(Use Default Lighting))均受支持。
2023-08-18 01:45:361

移动开发 android:fillViewport="true" , android:scrollbars="none" 是干什么的呀?求详解

android:fillViewport="true"当一个高度值不足scrollview的子控件fillparent的时候,单独的定义android:layout_height="fill_parent"是不起作用的,必须加上fillviewport属性,当子控件的高度值大于scrollview的高度时,这个标签就没有任何意义了。android:scrollbars="none" 隐藏滚动条
2023-08-18 01:45:551

如何使电脑端的网页游戏在手机端打开能自动适应手机屏幕?

为了使网页游戏在手机端能正常打开并适应手机屏幕,您可以在网页的 head 标签中加入以下代码:<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0, user-scalable=no">这样可以使网页在手机端自动缩放,适应手机屏幕。至于自动横屏,您可以在 head 标签中加入以下代码:<meta name="screen-orientation" content="landscape">这样可以使网页在手机端自动横屏显示。在使用这些代码之前,建议您阅读一下 W3C 的 Viewport 文档,了解更多有关 viewport 的知识。希望这些信息能帮助到您。
2023-08-18 01:46:021

umi中使用postcss-px-to-viewport进行移动端适配

4.完事! 附全图:
2023-08-18 01:46:091

网页制作不使用css3怎么做出自适应圆角矩形

在网页代码的头部,加入一行viewport元标签。<metaname="viewport"content="width=device-width,initial-scale=1"/>viewport是网页默认的宽度和高度,上面这行代码的意思是,网页宽度默认等于屏幕宽度(width=device-width),原始缩放比例(initial-scale=1)为1.0,即网页初始大小占屏幕面积的100%。2由于网页会根据屏幕宽度调整布局,所以不能使用绝对宽度的布局,也不能使用具有绝对宽度的元素。对图像来说也是这样。具体说,CSS代码不能指定像素宽度:width:xxxpx;只能指定百分比宽度:width:xx%;或者width:auto;3字体也不能使用绝对大小(px),而只能使用相对大小(em)。例如:body{font:normal100%Helvetica,Arial,sans-serif;}上面的代码指定,字体大小是页面默认大小的100%,即16像素。4流动布局(fluidgrid)"流动布局"的含义是,各个区块的位置都是浮动的,不是固定不变的。.main{float:right;width:70%;}.leftBar{float:left;width:25%;}float的好处是,如果宽度太小,放不下两个元素,后面的元素会自动滚动到前面元素的下方,不会在水平方向overflow(溢出),避免了水平滚动条的出现。5"自适应网页设计"的核心,就是CSS3引入的MediaQuery模块。它的意思就是,自动探测屏幕宽度,然后加载相应的CSS文件。<linkrel="stylesheet"type="text/css"media="screenand(max-device-width:400px)"href="tinyScreen.css"/>上面的代码意思是,如果屏幕宽度小于400像素(max-device-width:400px),就加载tinyScreen.css文件。<linkrel="stylesheet"type="text/css"media="screenand(min-width:400px)and(max-device-width:600px)"href="smallScreen.css"/>如果屏幕宽度在400像素到600像素之间,则加载smallScreen.css文件。END参考下面的例子——我称它为“盒子”<!doctypehtml><htmllang="en"><head><metacharset="utf-8"><!--viewportmetatoresetiPhoneinitalscale--><metaname="viewport"content="width=device-width,initial-scale=1.0"><title>Demo:ResponsiveDesignin3Steps</title><!--css3-mediaqueries.jsforIE8orolder--><!--[ifltIE9]><scriptsrc="http://css3-mediaqueries-js.googlecode.com/svn/trunk/css3-mediaqueries.js"></script><![endif]--><styletype="text/css">body{font:1em/150%Arial,Helvetica,sans-serif;}a{color:#669;text-decoration:none;}a:hover{text-decoration:underline;}h1{font:bold36px/100%Arial,Helvetica,sans-serif;}/************************************************************************************STRUCTURE*************************************************************************************/#pagewrap{padding:5px;width:960px;margin:20pxauto;}#header{height:180px;}#content{width:600px;float:left;}#sidebar{width:300px;float:right;}#footer{clear:both;}/************************************************************************************MEDIAQUERIES*************************************************************************************//*for980pxorless*/@mediascreenand(max-width:980px){#pagewrap{width:94%;}#content{width:65%;}#sidebar{width:30%;}}/*for700pxorless*/@mediascreenand(max-width:700px){#content{width:auto;float:none;}#sidebar{width:auto;float:none;}}/*for480pxorless*/@mediascreenand(max-width:480px){#header{height:auto;}h1{font-size:24px;}#sidebar{display:none;}}/*border&guideline(youcanignorethese)*/#content{background:#f8f8f8;}#sidebar{background:#f0efef;}#header,#content,#sidebar{margin-bottom:5px;}#pagewrap,#header,#content,#sidebar,#footer{border:solid1px#ccc;}</style></head><body><divid="pagewrap"><divid="header"><h1>Header</h1><p>Tutorialby<ahref="http://webdesignerwall.com">WebDesignerWall</a>(read<ahref="http://webdesignerwall.com/tutorials/responsive-design-in-3-steps">relatedarticle</a>)</p></div><divid="content"><h2>Content</h2><p>text</p><p>text</p><p>text</p><p>text</p><p>text</p><p>text</p><p>text</p><p>text</p><p>text</p><p>text</p></div><divid="sidebar"><h3>Sidebar</h3><p>textg</p><p>fgs</p><p>fgsg</p><p>dg</p><p>dfgfd</p><p>是否感到反感</p><p>sgrtg</p><p>分公司</p><p>sgf</p><p>text</p></div><divid="footer"><h4>Footer</h4></div></div></body></html>
2023-08-18 01:46:192

maya2015用曲线放样建模(所有曲线建模)都是黑色的外黑里灰。

DirectX 11 Shader 节点的属性,指定了 MayaUberShader 着色器文件。要使用该着色器,您必须在 Viewport 2.0 的 DirectX 11 环境中工作,并启用 dx11shader.mll 插件。有关详细信息。您可以在 Hypershade 创建栏中找到 DirectX 11 Shader。创建着色器后,会自动加载 MayaUberShader.fx 文件。dx11Shader.mll 插件可使您在 Maya Viewport 2.0 中加载并查看自己的 HLSL 着色器。使用 Hypershade 创建 DirectX 11 shader 时,会自动连接 MayaUberShader.fxo 文件;但是,您也可以改为加载自定义 HLSL 着色器。此外,<maya directory>presetsHLSL11examples 中提供了其他示例 HLSL 着色器。选择 DirectX 作为渲染引擎(方法 1)选择“窗口 > 设置/首选项 > 首选项 > 显示”(Window > Settings/Preferences > Preferences > Display)并将“渲染引擎”(Rendering engine)设置为“DirectX 11”。重要信息若要使用 DirectX 渲染引擎,您必须使用 64 位的 Windows 和可兼容 DirectX 11 的显卡。在面板菜单中选择“渲染器 > Viewport 2.0”(Renderer > Viewport 2.0)将工作区切换到 Viewport 2.0。注意您的工作区平视显示仪现在应指示 Viewport 2.0 (DirectX 11)。选择“窗口 > 设置/首选项 > 插件管理器”(Window > Settings/Preferences > Plug-in Manager)并加载 dx11Shader.mll 插件。选择 DirectX 作为渲染引擎(方法 2)此环境变量将覆盖交互式和批处理会话的用户首选项(“窗口 > 设置/首选项 > 首选项 > 显示”(Window > Settings/Preferences > Preferences > Display))(使用 -hw2 选项)。将 MAYA_VP2_DEVICE_OVERRIDE 设置为 VirtualDeviceDx11 可在 Viewport 2.0 中渲染时始终使用 DirectX 11。提示将此环境变量设置为 VirtualDeviceGL 可在 Viewport 2.0 中渲染时始终使用 OpenGL。注意取消设置该环境变量可再次使用用户首选项来选择渲染引擎。创建 DirectX 着色器选择“窗口 > 渲染编辑器 > Hypershade”(Window > Rendering Editors > Hypershade),以打开“Hypershade”窗口。在“创建”(Create)栏中,选择“Maya > 曲面 > DirectX 11 Shader”(Maya > Surface > DirectX 11 Shader)。将创建 DirectX 11 Shader,同时自动加载 MayaUberShader.fx。按 6 以获得纹理模式,按 7 以使用场景照明。提示纹理和非纹理模式均受支持,且所有灯光模式(“使用所有灯光”(Use All Lights)、“使用选定灯光”(Use Selected Lights)、“不使用灯光”(Use No Lights)和“使用默认照明”(Use Default Lighting))均受支持。
2023-08-18 01:46:261

android webview 怎么放大缩小

Android:WebView如何设定支持缩放:需要对WebView和WebSettings做一下设定webview.setVerticalScrollbarOverlay(true); //指定的垂直滚动条有叠加样式WebSettings settings = webview.getSettings();settings.setUseWideViewPort(true);//设定支持viewportsettings.setLoadWithOverviewMode(true);settings.setBuiltInZoomControls(true);settings.setSupportZoom(true);//设定支持缩放 html界面meta标签<metaname="viewport"content="height= [pixel_value| "device-height"] ,width= [pixel_value| "device-width"] ,initial-scale=float_value,//初始缩放minimum-scale=float_value,//最小maximum-scale=float_value,//最大user-scalable= ["yes" | "no"]//是否允许用户对页面缩放 "/>例如:<meta name="viewport" content="width=device-width,user-scalable=yes initial-scale=1.0, maximum-scale=2.0">-->设定支持缩放,最大两倍缩放
2023-08-18 01:46:361

如何获取屏幕的宽度

问题一:js 中怎么获取当前屏幕的宽度 document.documentElement.clientWidth 这个方法返回页面在当前窗口中可见部分的宽度(不包括滚动条宽度); window.innerWidth 这个方法返回页面在当前窗口中可见部分宽度(包括滚动条宽度); window.outerWidth 返回浏览器窗口自身宽度,包括菜单和边框; screen.width 返回设备的(屏幕宽度) 问题二:js网页如何获取手机屏幕宽度 ]@]@] @sssssvar x = navigator; var w=window.innerWidth || document.documentElement.clientWidth || document.body.clientWidth; var h=window.innerHeight || document.documentElement.clientHeight || document.body.clientHeight; document.getElementById(p1).innerHTML=屏幕分辨率:+screen.width + * + screen.height+内部窗口: + w + * + h 不知道是不是这个 屏幕分辨率 :pc上的桌面分辨率 。手机上是 一个型号固定的分辨率比如 华为8813的分辨率是480*854。。 内部窗口是 改变窗口大小刷新一下就有新的数据 问题三:用javascript 怎样才能很好的获取手机的屏幕宽度和高度 一般来说在移动浏览器上是拿不到屏幕真实分辨率的,因为页面渲染是在一个叫viewport的页面绘制区域内(说的通俗点就是手机浏览器是用一个虚拟的屏幕来显示网页的)。viewport和屏幕的真实尺寸并不是对应的,如在Safari Mobile中viewport默认宽度(320px)是屏幕真实尺寸(640px)的一半,这里不管是用window.innerHeight还是window.screen.width拿到的都是320px。当然我们可以通过meta设置改变viewport的比例,如initial-scale=.5就可以让viewport和屏幕一致的尺寸,但这个比例在不同的手机上并不一定是2倍关系,特别是Android手机,在大屏手机(5寸以上)上这个值是3倍甚至4倍。而且改变viewport比例后可能会导致后续制作中出现一系列问题。所以我认为不要纠结一定要拿到屏幕真实尺寸,就把viewport的尺寸当成屏幕的尺寸进行页面设计和制作肯定是没有问题的。 有一个非常曲线的解决办法,就是:css的媒体查询(@media)是能够检测屏幕尺寸(其实是浏览器窗体的真实尺寸,并不是屏幕的真实物理尺寸,介意的朋友就不要看了)的,通过它来给网页内的某个元素设置一个特殊的属性,然后再用JavaScript来获取这个属性值。当然这样只能获得一个阶梯值(比如480px到540px之间、540px到600px之间等等),不是精确值,所以可能得不偿失,因此我是不推荐的。 问题四:如何获得当前屏幕的高度 window.onload = function(){ 获取屏幕高度 document.documentElement.clientHeightconsole.log(document.documentElement.clientHeight); 获取屏幕宽度 document.documentElement.clientWidthconsole.log(document.documentElement.clientWidth);} 问题五:html中 如何获取屏幕宽度?? 把以下这段代码放到之间或之间预览即可看到数据 /*将获取的值存到变量里*/ width_screen=screen.width; height_screen=screen.height; availWidth_screen=screen.availWidth; availHeight_screen=screen.availHeight; colorDepth_screen=screen.colorDepth; /*end*/ /*输出值*/ document.write(你的屏幕宽为:+width_screen+ 你的屏幕高为:+height_screen+ 你的屏幕可用宽为:+availWidth_screen+ 你的屏幕可用高为:+availHeight_screen+ 你的颜色设置所有为数为:+colorDepth_screen); /*end*/ 问题六:怎么用jquery来获取屏幕的宽度和高速 $(window).width();$(window).height();严格来说,获取window才对 问题七:javascript怎么获取屏幕大小 1 2 3 4 5 6 7 8 9 window.onload = function(){ 获取屏幕高度 document.documentElement.clientHeight console.log(document.documentElement.clientHeight); 获取屏幕宽度 document.documentElement.clientWidth console.log(document.documentElement.clientWidth); } 问题八:PHP怎么获取屏幕的宽度与高度? 10分 PHP是无法获取屏幕的高度和宽度的,你可以用JS来获取 Javascript: 网页可见区域宽: document.body.clientWidth  网页可见区域高: document.body.clientHeight  网页可见区域宽: document.body.offsetWidth (包括边线的宽)  网页可见区域高: document.body.offsetHeight (包括边线的高)  网页正文全文宽: document.body.scrollWidth  网页正文全文高: document.body.scrollHeight  网页被卷去的高: document.body.scrollTop  网页被卷去的左: document.body.scrollLeft  网页正文部分上: window.screenTop  网页正文部分左: window.screenLeft  屏幕分辨率的高: window.screen.height  屏幕分辨率的宽: window.screen.width  屏幕可用工作区高度: window.screen.availHeight  屏幕可用工作区宽度: window.screen.availWidth JQuery: $(document).ready(function(){  alert($(window).height()); 浏览器当前窗口可视区域高度  alert($(document).height()); 浏览器当前窗口文档的高度  alert($(document.body).height());浏览器当前窗口文档body的高度  alert($(document.body).outerHeight(true));浏览器当前窗口文档body的总高度 包括border padding margin  alert($(window).width()); 浏览器当前窗口可视区域宽度  alert($(document).width());浏览器当前窗口文档对象宽度  alert($(document.body).width());浏览器当前窗口文档body的宽度  alert($(document.body).outerWidth(true));浏览器当前窗口文档body的总宽度 包括border padding margin  }) 问题九:怎样用 JavaScript 准确获取手机屏幕的宽度和高度 屏幕分辨率的高:window.screen.height 屏幕分辨率的宽:window.screen.width 网页可见区域宽:document.body.offsetWidth 网页可见区域高:document.body.offsetHeight 问题十:Android开发 怎样获取屏幕的宽高是多少厘米 我们需要获取Android手机或Pad的屏幕的物理尺寸,以便于界面的设计或是其他功能的实现。下面就介绍讲一讲如何获取屏幕的物理尺寸 下面的代码即可获取屏幕的尺寸。 在一个Activity的onCreate方法中,写入如下代码: [java] view plain copy print? DisplayMetrics metric = new DisplayMetrics(); getWindowManager().getDefaultDisplay().getMetrics(metric); int width = metric.widthPixels; 屏幕宽度(像素) int height = metric.heightPixels; 屏幕高度(像素) float density = metric.density; 屏幕密度(0.75 / 1.0 / 1.5) int densityDpi = metric.densityDpi; 屏幕密度DPI(120 / 160 / 240) DisplayMetrics metric = new DisplayMetrics(); getWindowManager().getDefaultDisplay().getMetrics(metric); int width = metric.widthPixels; 屏幕宽度(像素) int height = metric.heightPixels; 屏幕高度(像素) float density = metric.density; 屏幕密度(0.75 / 1.0 / 1.5) int densityDpi = metric.densityDpi; 屏幕密度DPI(120 / 160 / 240) 但是,需要注意的是,在一个低密度的小屏手机上,仅靠上面的代码是不能获取正确的尺寸的。比如说,一部240x320像素的低密度手机,如果运行上述代码,获取到的屏幕尺寸是320x427。因此,研究之后发现,若没有设定多分辨率支持的话,Android系统会将240x320的低密度(120)尺寸转换为中等密度(160)对应的尺寸,这样的话就大大影响了程序的编码。所以,需要在工程的AndroidManifest.xml文件中,加入supports-screens节点,具体的内容如下: [html] view plain copy print? >
2023-08-18 01:46:431

求教 关于vue web项目手机端viewport设置为什么无效

是怎么回事
2023-08-18 01:46:511

大屏网页设计-如何设计自适应屏幕大小的网页ResponsiveWebDesign

网页设计教程设置网页步骤1、打开PS,新建空白文档,名称设置为“某某工作室”,从预设大小下拉列表中选择“1024x768”,模式设计为“RGB颜色”,内容设置为“白色”,点击“好”按钮完成文档的创建工作。2、新建一名称为“框架”的图层,利用该图层实际整个网页的整体布局。首先选择“矩形选择工具”,然后将矩形的宽度设置为1024,高度设置为80,在文档的上下两侧各框选一部分内容并填充为黑色,从而使整个网页呈现“宽屏幕”效果。3、在背景图层的上方新建一新图层,并命名为“背景颜色”。点击“矩形选择工具”,设置“宽度为400,高度为768,然后在窗口的左侧框选一部分内容,填充一种深绿色。然后点击“矩形选择工具”,设置“宽度为624,高度为768,然后在窗口的右侧框选一部分内容,填充一种浅绿色。填充两种颜色饱和度有一点差别的颜色,目地是产生较为明显的对比。4、在“框架”图层之上再新建一图层,名称为“主体元素”。打开一张事先准备好的百合花图片,双击“背景”图层将其转换为“图层0”,点击“魔术棒”工具,在图片白色区域内点击,选择白色区域后,按下DEL键删除白色区域。然后拖放图片到图层“主体元素”上。5、然后选择“矩形选择工具”,设置“宽度为624,高度为768,然后在窗口中选择花朵右侧的一部分内容,并调整其亮度和对比度,使花朵的左右两侧呈现明显的对比。对该页面进行细节的调整,增加一些导航栏,信息提示内容和版权信息等内容,最终制作完成的页面。6、选择“切片”工具,然后对内容进行切分。切分的好处是有利于文件在网络上传输,同时在用切片工具划分内容时最好将需要被文字内容替换的部分进行独立分割。分割完成后的效果。7、找到保存文件的位置,打开某某工作室.html文件,然后在内容区域内点击鼠标右键,选择“查看源文件”,就会发现对应的网页内容已经生成。至此,利用PS设计网页内容完成。网页设计如果我用1920*1080的页面,那么内容应该限制在多大尺寸?最好控制在1000px吧,因为还有很多用户用的是分辨率很低的,如果你的用户都是用的大屏浏览器,那么就可以宽一点,比如你的客户是跟网站、设计类有关的,那么他们电脑的分辨率不会低的,至少是1440px,所以你可以先确定你用户的电脑大致分辨率的多大,再考虑宽度尺寸如何设计自适应屏幕大小的网页ResponsiveWebDesign手机的屏幕比较小,宽度通常在600像素以下;PC的屏幕宽度,一般都在1000像素以上(目前主流宽度是1366×768),有的还达到了2000像素。同样的内容,要在大小迥异的屏幕上,都呈现出满意的效果,并不是一件容易的事。很多网站的解决方法,是为不同的设备提供不同的网页,比如专门提供一个mobile版本,或者iPhone/iPad版本。这样做固然保证了效果,但是比较麻烦,同时要维护好几个版本,而且如果一个网站有多个portal(入口),会大大增加架构设计的复杂度。于是,很早就有人设想,能不能”一次设计,普遍适用”,让同一张网页自动适应不同大小的屏幕,根据屏幕宽度,自动调整布局(layout)?如何设计自适应屏幕大小的网页(转)一、”自适应网页设计”的概念2010年,EthanMarcotte提出了”自适应网页设计”(ResponsiveWebDesign)这个名词,指可以自动识别屏幕宽度、并做出相应调整的网页设计。他制作了一个范例,里面是《福尔摩斯历险记》六个主人公的头像。如果屏幕宽度大于1300像素,则6张图片并排在一行。如何设计自适应屏幕大小的网页(转)如果屏幕宽度在600像素到1300像素之间,则6张图片分成两行。如何设计自适应屏幕大小的网页(转)如果屏幕宽度在400像素到600像素之间,则导航栏移到网页头部。如何设计自适应屏幕大小的网页(转)如果屏幕宽度在400像素以下,则6张图片分成三行。如何设计自适应屏幕大小的网页(转)上面有更多这样的例子。这里还有一个测试小工具,可以在一张网页上,同时显示不同分辨率屏幕的测试效果,我推荐安装。二、允许网页宽度自动调整“自适应网页设计”到底是怎么做到的?其实并不难。首先,在网页代码的头部,加入一行viewport元标签。viewport是网页默认的宽度和高度,上面这行代码的意思是,网页宽度默认等于屏幕宽度(width=device-width),原始缩放比例(initial-scale=1)为1.0,即网页初始大小占屏幕面积的100%。所有主流浏览器都支持这个设置,包括IE9。对于那些老式浏览器(主要是IE6、7、8),需要使用。“自适应网页设计”到底是怎么做到的?其实并不难。首先,在网页代码的头部,加入一行viewport元标签。<metaname=”viewport”content=”width=device-width,initial-scale=1″/>viewport是网页默认的宽度和高度,上面这行代码的意思是,网页宽度默认等于屏幕宽度(width=device-width),原始缩放比例(initial-scale=1)为1.0,即网页初始大小占屏幕面积的100%。所有主流浏览器都支持这个设置,包括IE9。对于那些老式浏览器(主要是IE6、7、8),需要使用。
2023-08-18 01:47:061

NVIDIA Ansel 游戏画面撷取技术与 VRWORKS AUDIO 音讯技术进一步介绍

NVIDIA在上周末宣布全新架构Pascal的娱乐级显示卡GTX1080与GTX1070时,也一并宣布两项新技术,分别是游戏内截图的Ansel,以及为了VR音讯的VRWORKSAUDIO;稍早NVIDIA也在台湾进一步介绍这两项技术的功能与原理,值得一提的是这两项技术并非Pascal架构独享的功能,未来仍可搭配近期架构的GPU体验。 Ansel的截图功能是与游戏开发商深度合作,为了让一些喜爱在游戏中撷取精美照片的玩家更容易拍摄他们想要的画面截图;虽然一些游戏内也有提供可让画面暂停并调整视角、加入特效的专业拍照模式,不过不是所有的游戏都有提供这样的功能,多半的玩家是透过截图软体的方式设法在游戏中拍下画面,不过截图软体毕竟没有与游戏系统整合,难以捕捉瞬间的大景与调整到喜欢的角度。 而Ansel则是透过GPU技术,借由多重Viewport(Viewport的概念有点像是从窗户忠看游戏3D场景)作为基础,让游戏可进入专业的撷取模式。而Ansel包括几个主要机能:自由视角、滤镜、HDR、超取样解析度以及360度拍摄。 自由视角对于构图是相当重要的,一般没有内建拍照功能而透过截图外怪的游戏要调整到满意的视角是有难度的,毕竟一般游戏的视角多半围绕在游戏主角身上,也使得取景受到限制,而Ansel则允许在游戏进入Ansel的截图模式后,在整个运算后的环境自由的移动(当然游戏厂商可限制移动的范围),就能取得理想的拍摄角度。 至于滤镜与HDR功能,则是透过GPU加速演算的方式帮游戏加入特效,无论是Lomo风、特殊色彩或是高对比画面下的影像后制,宛然真的在处理照片特效一样。 超取样解析度则是让游戏截图提升到专业照片等级的重要关键,透过以多个Viewport撷取的影像演算后进行解析度提升,最高可将4K影像进行高达32倍(依照显示卡效能而异)取样后达到4.5GigaPixel的惊人解析度,使得游戏截图足以作为专业海报列印输出,不过档案尺寸也会相当惊人,建议还是考虑实际使用情境决定取样倍率以免输出过高画素的影像。至于360度拍摄就宛如近期流行的天周相机一样,可拍摄360度游戏节图。 Ansel是一项软体开发商选择性的功能,毕竟不是所有的游戏都适合在游戏内提供专业拍照模式,例如线上游戏、多人连线FPS等,很可能玩家进入拍摄模式而暂停的同时就已经被其他玩家打死,回到画面才发现角色死亡,另外像是解谜游戏的迷宫场景也可能有玩家利用Ansel的特性以自由视角找寻路线作弊。不过对游戏开发商而言,导入Ansel的支援可不用另行开发游戏内的拍照模式,只要做好像是视角的可移动范围即可。目前包括全境封锁、巫师等数款还未上市以及已经上市的游戏将会预载或是透过更新方式支援Ansel。 至于VRWORKSAUDIO是针对VR游戏中的音效所做的技术,不同于一般游戏中的体验,VR体验有着更复杂的要求,包括声音与目前人物所在的位置、距离、空间、反射等等,为了营造更逼真的VR内音效,需要更接近自然声音的模拟。 为了产生更自然的VR世界声音,除了要能够即时追踪使用者位置提供合理的音效,例如上途中因为周遭不同特性物体反射造成的声音也要能一并模拟,所以这时NVIDIA的RayTracing技术就派上用场了。 谈到RayTracing,一般玩家会直觉想到是用于光线追踪的模拟技术,不过先前这项技术也被用于模拟声波的反射,像是具备杜比音效的电影院,音响配置就会透过基于RayTracing的声波模拟进行摆设方位的模拟;总之利用基于光线追踪与物理特性的技术,VRWORKSAUDIO可模拟声波在VR世界中的传递,让使用者听到更像真实环境的音效。 你或许会喜欢 iPhone玫瑰金母亲节现货供应 国外无限上网吃到饱
2023-08-18 01:47:251

pdf.js可以实现lazyload吗?

有个 disableAutoFetch 选项,在全局配置里面,搜索改为true就行了。如果使用视图框架,在viewer.js里面,否则就再pdf.worker.js中
2023-08-18 01:47:353

vue3 自适应布局: 注意!对于非style标签的px是无法转化为vw的

npm install postcss-px-to-viewport -D 新建文件:vue.config.js module.exports={ css: { extract: false,//false表示开发环境,true表示生成环境 sourceMap: false, loaderOptions: { postcss: { plugins: [ require("postcss-px-to-viewport")({ unitToConvert: "px", // 需要转换的单位,默认为"px" viewportWidth: 1920, // 视窗的宽度,对应pc设计稿的宽度,一般是1920 viewportHeight: 1080,// 视窗的高度,对应的是我们设计稿的高度,我做的是大屏监控,高度就是1080 unitPrecision: 3, // 单位转换后保留的精度 propList: [ // 能转化为vw的属性列表 "*" ], viewportUnit: "vw", // 希望使用的视口单位 fontViewportUnit: "vw", // 字体使用的视口单位 selectorBlackList: [], // 需要忽略的CSS选择器,不会转为视口单位,使用原有的px等单位。 minPixelValue: 1, // 设置最小的转换数值,如果为1的话,只有大于1的值会被转换 mediaQuery: false, // 媒体查询里的单位是否需要转换单位 replace: true, // 是否直接更换属性值,而不添加备用属性 exclude: /(/|)(node_modules)(/|)/, // 忽略某些文件夹下的文件或特定文件,例如 "node_modules" 下的文件 }) ] } } } }
2023-08-18 01:47:421

WPF 3D中如何选择模型的一部分并维护模型

我选择了一个方块,将方块显示为蓝色,同时屏幕坐上显示了点击方块后的操作。整个流程我处理了两个问题:1. 如何选择模型的这一部分2. 如何维护你选择的这个部分 问题1:如何选择模型的这一部分由于WPF 3D模型中只有Viewport3D对象有MouseButtonLeftDown事件,而模型的某个部分是没有这个事件的。因此需要使用首先VisualTreeHelper.HitTest来确定具体点击的是哪个模型,同时这个模型是需要给外部用的,因此我们自定义了一个ModelVisual3DSelectedEventHandler的事件给外部调用。 1 //自定义个一个模型选中的EventHandler 2 public class Visual3DEventArgs : EventArgs3 {4 public ModelVisual3D Visual3D { get; set; }56 public Visual3DEventArgs(ModelVisual3D modelVisual3D)7 {8 this.Visual3D = modelVisual3D;9 }10 }1112 public delegate void ModelVisual3DSelectedEventHandler(object sender, Visual3DEventArgs args);13 //....14 15 //声明Viewport3D的LeftButton事件16 ViewPort.MouseLeftButtonDown += ViewPort_MouseLeftButtonDown;1718 //Viewport LeftButton的函数19 void ViewPort_MouseLeftButtonDown(object sender, System.Windows.Input.MouseButtonEventArgs args)20 {21 Point mousePos = args.GetPosition(ViewPort);22 var hitParams = new PointHitTestParameters(mousePos);23 VisualTreeHelper.HitTest(ViewPort, null, ResultCallback, hitParams);24 }2526 //根据HitTest选中之后的处理27 private HitTestResultBehavior ResultCallback(HitTestResult result)28 {29 RayHitTestResult rayResult = result as RayHitTestResult;3031 if (rayResult != null)32 {33 var visual3D = result.VisualHit as ModelVisual3D;34 if (visual3D != null)35 {36 if (OnModelSelected != null)37 {38 OnModelSelected(this, new Visual3DEventArgs(visual3D));39 }4041 return HitTestResultBehavior.Stop;42 }4344 }45 return HitTestResultBehavior.Continue;46 } 2. 问题2:如何维护你选择部分我刚刚在Visual3DEventArgs中已经获得了选择的模型了,这时候我就可以对它进行操作了。或许数据库中有个模型叫"block1",查找数据等等.... 但是很悲催的是, 虽然在xaml文件中ModelVisual3D是有x:name的,但是ModelVisual3D本书是没有 ModelVisual3D.Name这个属性的,即使获取了这个模型,也只能对其进行基本的渲染,根本没有办法进行逻辑操作(例如根据数据库通信等)。 只有通过viewport3D.FindName(string name)才能获取对象! 解决办法是:我们自己可以维护一个模型名字表(其实就是个xml文件): dg01 dg02 dg04 然后定义一个返回名字的函数: 1 public Section GetSelSection(ModelVisual3D visual3D)2 {3 if (_context != null && _context.Sections != null && visual3D != null)4 {5 var viewPort = _context.Model.ViewPort;67 foreach (var section in _context.Sections)8 {9 if (viewPort.FindName(section.Name) == visual3D)10 {11 return section;12 }13 }14 }15 17 return null;18 } 我就可以通过GetSelSection(args.Visual3D)获得这个section对象了。对了,这个Section就是刚才XML文件的映射类。
2023-08-18 01:47:521

ObjectARX 自定义实体重写viewportDraw(AcGiViewPortDraw*)的问题

模型空间中是调用WorldDraw函数,只有返回True才能正确绘制,ViewPortDraw是在视口中显示实体用的函数。
2023-08-18 01:47:591

是什么意思?

meta是一个标签,你用eclipse自动创建一个空的JSP的时候会默认生成<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">;这个标签一半不会用它做什么事
2023-08-18 01:48:061

用javascript 怎样才能很好的获取手机的屏幕宽度和高度

window.innerWidthwindow.innerHeight
2023-08-18 01:48:154