- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我想使用 webgl 围绕枢轴点进行变换。灵感来自 Three.js 和 this comment
Create a object that will act as pivot:
mesh.position.y = 10;
var pivot = new THREE.Object3D(); pivot.add( mesh );
scene.add( pivot );
我试图将枢轴设置到某个点并旋转对象。这是我执行这些操作的代码:
let transforms = {};
this.makeTransform = (name, transform) => {
transforms[name] = modelMatrix(transform);
};
const modelMatrix = transform => {
let matrix = transforms[transform.transform] || mat4.identity();
return mat4.transform(matrix, transform);
};
const mvpMatrix = modelMatrix => {
const { pos: camPos, target, up } = camera;
const { fov, aspect, near, far } = camera;
let camMatrix = mat4.lookAt(camPos, target, up);
let viewMatrix = mat4.inverse(camMatrix);
let projectionMatrix = mat4.perspective(fov, aspect, near, far);
let viewProjectionMatrix = mat4.multiply(projectionMatrix, viewMatrix);
return mat4.multiply(viewProjectionMatrix, modelMatrix);
};
this.drawMesh = (name, transform) => {
const uMatrix = mvpMatrix(modelMatrix(transform));
// set uMatrix as uniform and draw
}
用法(渲染代码):
r.makeTransform('root', {
translate: [100, 0, 0]
});
r.drawMesh('sample', {
transform: 'root',
translate: [0.0, 0.0, 2.0],
rotate: [0.0,
Math.PI,
0.0]
});
所以我没有场景图,但我制作变换矩阵并将它们应用于对象。这里的sample
网格应用了root
变换。这会在 x 轴上平移对象,并仍然围绕其原点旋转对象。
但是我无法使用上述方法围绕枢轴点旋转对象。
基于 gman 的回答这有效:
r.makeTransform('root', {
translate: [0, 0, 0],
rotate: [0.0, u.PI, 0.0]
});
r.drawMesh('sample', {
transform: 'root',
translate: [100.0, 0.0, 0.0]
});
<小时/>
因为几何图形中的顶点被定义为使得对象中心位于 0,0 原点。
喜欢here
var x = ix * segmentWidth - widthHalf;
或here
for (let i = 0; i < vertices.length; i+=3) {
vertices[i] -= widthHalf;
vertices[i+1] -= heightHalf;
vertices[i+2] -= depthHalf;
}
最佳答案
场景图只是表示矩阵层次结构的一种方式。这是一个简单的人体场景图
root
└─base
└─waist
├─chest
│ ├─neck
│ │ └─head
│ ├─left arm
│ │ └─left forearm
│ │ └─left hand
│ └─right arm
│ └─right forearm
│ └─right hand
├─left thigh
│ └─left leg
│ └─left foot
└─right thigh
└─right left
└─right foot
因此,根据典型的 webgl 矩阵数学来绘制右臂
projectionMatrix * viewMatrix * rootMatrix * baseMatrix
* waistMatrix * chestMatrix * rightArmMatrix * rightForeArmMatrix
* rightHandMatrix
因此,您可以将任何 Three.js 场景图转换为简单的矩阵数学。如果是
scene.add(pivot);
pivot.add(mesh);
然后你的场景图看起来像
scene
└─pivot
└─mesh
所以你需要结束
projectionMatrix * viewMatrix * sceneMatrix * pivotMatrix * meshMatrix
或者换个 Angular 看
modelMatrix = sceneMatrix * pivotMatrix * meshMatrix
projectMatrix * viewMatrix * modelMatrix
场景图本身只是一种以通用且灵活的方式轻松组织矩阵的方法,而不是对所有数学进行硬编码。
注意:sceneMatrix 通常是恒等,因此您可以将其省略,但从技术上讲, Three.js 中的场景是场景图中的另一个节点,因此它本身代表一个矩阵。
关于javascript - 如何按照 vanilla webgl 中的 THREE.js 解决方案中所述绕枢轴点旋转对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57826733/
我只是想知道要安装哪个版本的 Visual Studio 2010(专业版或高级版)提示升级项目.. 项目包括:asp.net mvc、数据库和silverlight。 最佳答案 通常,由不同版本的相
目录 前言 四、技术选型 五、后端接口设计 5.1业务系统接口 5.2App 端接口 六、关键逻辑实现 6.1Red
目录 前言 一、需求分析 1.1发送通知 1.2撤回通知 1.3通知消息数 1.4通知消息列表 二、数据模型设计
目录 前言 一、多租户的概念 二、隔离模式 2.1独立数据库模式 2.2共享数据库独立数据架构 2.3共享数据库共享数据架构
导读: 虽然锁在一定程度上能够解决并发问题,但稍有不慎,就可能造成死锁。本文介绍死锁的产生及处理。 死锁的产生和预防 发生死锁的必要条件有4个,分别为互斥条件、不可剥夺条件、请求与保持条件和循环等待条
在浏览网页后,我找不到任何功能来执行此操作,我有可行的个人解决方案。也许它对某人有用。 **使用 Moment 插件转换日期。***moment(currentPersianDate).clone()
是否有一种解决方案可以很好地处理数字(1-10)手写?我试过tesseract,但我得到的只是垃圾。 理想情况下是 OSS,但商业也可以。 最佳答案 OpenCV 现在带有手写数字识别 OCR 示例。
在服务器应用程序上,我们有以下内容:一个称为 JobManager 的单例类。另一个类,Scheduler,不断检查是否需要向 JobManager 添加任何类型的作业。 当需要这样做时,调度程序会执
关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。 想改进这个问题?将问题更新为 on-topic对于堆栈溢出。 5年前关闭。 Improve this qu
当您尝试从 GitHub 存储库安装某些 R 包时 install_github('rWBclimate', 'ropensci') 如果您遇到以下错误: Installing github repo
问题在以下链接中进行了描述和演示: Paul Stovell WPF: Blurry Text Rendering www.gamedev.net forum Microsoft Connect: W
我正在寻找一种解决方案,使用标准格式 a × 10 b 在科学记数法下格式化 R 中的数字。一些同行评审的科学期刊都要求这样做,并且手动修改图表可能会变得乏味。 下面是 R 标准“E 表示法”的示例,
已编辑解决方案(如下...) 我有一个启动画面,它被打包到它自己的 jar 中。它有效。 我可以通过以下方式从另一个 java 应用程序内部调用 Splash.jar: Desktop.getDesk
什么是创建像 PageFlakes 或 iGoogle 这样的门户网站的好框架/包? ?我们希望创建一个为员工提供 HR 服务的员工/HR 门户,但我们也需要一种足够灵活的产品,以便我们可以使用它来为
我正在寻找一种解决方案,使用标准格式 a × 10 b 在科学记数法下格式化 R 中的数字。一些同行评审的科学期刊都要求这样做,并且手动修改图表可能会变得乏味。 下面是 R 标准“E 表示法”的示例,
如何将 solr 与 heritrix 集成? 我想使用 heritrix 归档一个站点,然后使用 solr 在本地索引和搜索该文件。 谢谢 最佳答案 使用 Solr 进行索引的问题在于它是一个纯文本
完整日历不包含工作时间功能选项(在任何一天的议程 View 中选择第一行和最后一行 - 例如公司不工作)。我做到了类似的事情: viewDisplay: function(view){
我正在使用 bootstrap 作为我的下拉菜单。但有一个问题, 如果我的下拉菜单有多级子菜单,那么它会显示在屏幕上,并出现底部滚动条。 如何将子菜单保留在屏幕内,我需要一个 jQuery 解决方案。
我有一个要转换为 C# 的 Excel 宏。目前我手动转到一个已经打开的 IE 窗口,从中复制所有内容(html 表)并粘贴到 excel 工作表中。然后我正在处理数据。这非常有效,因为将 html
我用谷歌搜索了一下,但没有找到好的结果。 现在我正在构建一个网站,我试图从一开始就从设计的角度使其尽可能正确。 我现在面临的问题是,在决定开始使用日志记录时,我需要一个项目来放置这段代码。由于我无法在
我是一名优秀的程序员,十分优秀!