梅塔:为什么three.js将构建检查到主git repo中?
例如,如果我进行分叉和克隆three.js做一个构建,git说我现在已经修改了文件,尽管我还没有修改任何东西!(因为构建/树只会每隔一段时间更新一次。)如果我真的想发布PR,我必须记住不要提交build/树,我的IDE会警告我修改过的文件…
所以我只是想知道这背后的逻辑是什么——作为一个老派的C++图形专家,这看起来很奇怪,但对于Javascript项目来说可能是正常的?
使构建文件成为回购协议的一部分使我们能够使用https://raw.githack.com/1如果贡献者更改了示例、文档或改进了编辑器,他们总是可以提供一个带有dev最新版本three.js的实时演示。例子:https://github.com/mrdoob/three.js/pull/163513
或者,您可以使用以下链接测试dev最新版本three.js的示例。nhttps://raw.githack.com/mrdoob/three.js/dev/examples/index.html3
好吧,好吧,我不会这样做(您正在测试分支尖端的示例,而不是从无论最后一次做什么,基本上都是混合git提交(如果你喜欢的话,我会让示例链接到最新版本的CDN),但是如果人们喜欢这样,我该说谁呢!但是那是另一个故事。)
和yikes,PR#16351在不使用git lfs的情况下添加了相当大的二进制文件!但这是另一个故事。
听起来像是一个潜在的有用变化。为什么不在Github上打开一个问题来讨论呢?ngaryo:
例如,如果我分叉并克隆three.js做一个构建,git说我现在已经修改了文件,尽管我还没有修改任何东西!
但是你确实改变了一些东西——或者至少,你运行了一个改变了一些东西的脚本。我们一直在代码上运行脚本来进行更改,例如linting、重构等。为什么创建构建文件会有所不同?
我对C++没有太多经验,但正如您所说,这种混乱可能是由于语言的差异造成的。在这里构建文件主要是合并模块,或者用在旧浏览器中具有更好支持的版本替换函数。编译语言中存在的“源代码”和“构建”在概念上没有相同的区别,如果您想在项目中直接使用源代码中的文件,只需稍作修改即可。如果我确实想发布PR,我必须记住不要提交build/树,我的IDE警告我修改过的文件…
记住不要添加版本不是什么大问题,也许您可以配置IDE停止显示此repo的警告?大多数JS开发人员使用VSCode、Atom或Sublime文本,我不记得在其中任何一种文本中看到过警告。
也许你是对的,git GUI隐藏了你仍然有修改过的文件的事实。我是一个老git cmdline家伙-离开我的草坪!(哈哈)
但我认为无论你何时做git pull,构建文件都会有冲突,对吗?(至少在上游完成新构建之后)因此您必须解决这些冲突(删除您的冲突,接受它们的冲突),然后进行重建。没什么大不了的,但当我看到git拉(或合并)冲突时,我的心率总是会升高。
不管怎样,我想这里的人喜欢这种方式,所以我会处理。looeee:
在这里构建文件主要是对模块进行合并,或者用在旧浏览器中支持更好的版本替换函数。编译语言中存在的“源代码”和“构建”在概念上并没有相同的区别,我认为这不止于此,就像独立的GLSL文件可能不仅仅是一个简单的concat,但我认为解决方案更多的是有一个本地.ignore文件,它不会提交构建。但是最后你会得到一个不同的忽略文件。garyo:
所以我只是想知道这背后的逻辑是什么——作为一个老派的C++图形专家,这看起来很奇怪,但对于Javascript项目来说可能是正常的?
我希望解决这一点,所以我希望我的评论不会被删除。当我想到一个现代javascript项目时,我想到了React。当查看react的源代码时,它似乎使用了该语言的一个非常现代的版本,您将看到类、箭头函数、异步/等待以及各种各样的东西。包括three.js在一个包含很多其他javascript模块的项目中,三个模块很可能是唯一的一个包没有semver的年龄。
一件大事,我真的不知道它在引擎盖下是如何工作的,但我让我的想象力狂野,那就是用***8***和***9***的旗帜跑步/建筑。这可以允许在编译时进行各种优化,我认为这是不可能的three.js今天使用。今天,我可能可以在任何一台电脑上打开控制台three.js应用程序,并记录draw调用,而我可能想要一个甚至不进行该计算的生产构建。
因此我认为您无法从中应用任何通用规则three.js适用于所有javascript项目,反之亦然。我总是想进行一次建设性的对话,我对这些意见很好奇,一个来自C++的固执己见的开发人员可能会这样做。
像存储巨大的网格、音频文件和视频可能是LFS的工作,但我从来没有真正接触过LFS,因为three.js不使用它,我从中学到了一切three.js. 这里的想法是你不必同步大文件?我总是很难设置它。
我还想知道发布版本有哪些替代方案。它们是否可以在一些公共忽略文件中被忽略,然后由维护人员手动提交?它们能否承诺进行其他回购?pailhead:
我从未研究过这一点,但我认为解决方案更多的是使用一个不会提交构建的本地***10***文件。但最终您会得到一个不同的忽略文件。
这实际上是可能的。您可以使用git update index--skip worktree告诉git忽略工作树中某些文件已更改的事实。它是一个文件接一个文件的,不是整个目录,但它在大部分情况下都能工作。然而,当您从上游提取,并且构建已经更改时,您仍然会遇到必须解决的冲突,因此这不是100%的解决方案。
如果是我的项目,我会有一个github CI挂钩,它将在某处发布构建(另一个git repo或只是一个CDN),包括示例和所有内容。然后githack和其他端点将从中获取数据,而不是源repo。但是,我来自一个以C++为主的世界,我也不知道JS的工具,所以可能有很好的理由不这么做。
至于git lfs,请看我最近为跟踪这一建议而创建的问题。多年来,我一直将git lfs用于大型二进制文件(VFX资产、作为zip文件的客户复制案例等),尽管我知道有些人对此并不满意。Github确实对文件和包大小实施了严格限制(非LFS文件大小<;100MB,建议的回购大小<;1GB,2GB硬限制),这让我很头疼。
我想我以前做过的就是拥有自己的功能开发和主分支。我在dev中开发和构建,在主控中挤压而不是构建,我从主控中发出拉请求。这也是一种有效的方法吗?
桶头:
这也是一种有效的方法吗?
当然可以。这可能有点危险,因为您应该在提交之前进行构建,以确保一切正常(尤其是在合并或重定基址时)。但在这种情况下,您可以进行构建,运行最终测试,然后***11***在提交之前重置构建目录。所有这些都是完全可行的
Meta: Why does three.js check builds into the master git repo?n
three.js[已解决]正交摄影机的变换控件:gizmos缩放问题
您好,我正在使用带轨道控制的正交摄影机。我注意到当缩放照相机变焦不改变相机的位置(如透视相机)。首先,我想知道为什么这两个相机的实现方式不同?第二,我也在使用TransformControls,对于透视摄影机,更新功能上的小控件的重新缩放在这个等式中非常有效>但是使用OrbitControls更改缩放而不是正交摄影机的位置时,它没有正常工作。我试着像这样在等式中添加缩放,但没有得到任何好的结果>我应该以不同的方式包括它吗?我应该使用其他控件吗?谢谢大家的帮助!NaDaMa:首先,我很想了解为什么这两个摄像头...
three.js多次渲染同一模型(obj模型),FPS要低得多
我试图在程序中渲染150个相同的树模型,但FPS突然从60下降到30+。你能告诉我什么是最好的解决办法吗?非常感谢。和平与爱。skr有两种典型的方法可以解决这个性能问题(太多的绘制调用):- 使用实例化渲染- 将所有几何体合并为一个几何体(因此只有一个网格)...
three.js可缩放场景背景
three.js大家好,我有一个场景,由一个物体(反射雕像)组成,保持在一个漂亮背景的中心。我一直在使用威尼斯日落矩形hdr地图作为我的场景背景它既可以作为环境地图,也可以作为背景我看到背景不会与场景中渲染的网格一起缩放。这给人一种场景完全是假的感觉。i、 e状态向上/向下缩放,但背景不缩放。目前,我已经禁用了放大/缩小功能,这样用户就不会感到害怕。我的问题是:1. 当轨道控制放大/缩小时,我是否需要在此处使用一些着色器魔法来放大或缩小场景背景,以便看起来场景中的所有对象都在均匀缩放?或者这根本不可能做到?...
three.js移动导入的Gltf模型
three.js我导入了我的gltf模型并将其添加到场景中,但现在如果我尝试移动它,它将不会=新建三、几何();var=混音器( 模型动画[0]>如何移动模式?Prakar_Srivastava:var>3D对象不能是Geometry或BufferGeometry类型。它应该是Object3D或类似Mesh、Points或Line的派生类的实例。在您的情况下,我只是这样声明变量:var mode;在动画循环中,执行以下操作:如果(mod!==未定义)>还请记住,基本3D场景的重要部分在代码片段中丢失(例如相...
three.js平面明暗处理的问题
three.js嗨!我在项目中使用节点材质。我在模型渲染方面有问题。它看起来像是真实的平面阴影。如何平滑多边形?也有点像低分辨率阴影纹理贴图的自阴影。可能不是,但可能是。@Arkadiy\\u Vinkovskiy您需要在您的帖子中添加更多细节。屏幕截图不足以说明这里发生了什么。始终包括引起问题的代码,如果您使用的是模型,也要包括这些代码。更好的是,使用codepe制作一个工作示例...
three.js如何渲染立方体材质?
您好,直到昨天,我才相信Object3D是一组网格,而网格是一组几何体+材质,每个对象只有一个对象。我发现了立方体材质的结构,因此object3D的网格包含1个几何体(boxGeometry)和6个材质!所以问题是,这种网格的渲染效果如何?有关于它的文件吗?(这是为了提高我对three.js)非常感谢还有其他问题,与我的上一个帖子相关,如果一个网格中可能有多个材质,如何设置CustomDistanceMaterial以考虑所有材质的所有贴图?elysium11:所以问题是,渲染如何在这种类型的网格上工作?您...
three.js如何创建要在网格中拟合的线段
three.js伙计们,我想帮忙,假设我有一个这样的网格图像718×729 1.25 KB我想在网格面内创建线段,也就是说,我想将网格转换成这样的线图像710×828 740字节有人能帮忙吗???...
three.jsGLTFLoader.js这是我的登记簿错误
three.js每当我试着做决定的时候3.GLTFLoader对象我收到此错误代码:“未捕获类型错误:这是我的登记簿不是一个函数“我需要帮助!由Penta#u Trax在post#5中解决我最终发现我一直在使用错误的文件,当你需要使用jsm/example时,我使用的是js/example。其他东西也是个问题。但这是问题的基础。你能给我们看看你的代码吗?通常,如果你使用的是import语句,GLTFLoader不需要在前面加三个字符。好的,所以在这之前,我刚刚关注了这个视频,因为它是去年发布的。但是现在我试...
three.js使用threejs的光流
嘿,我需要通过我的屏幕显示一束移动的光束。我不想使用任何模型或动画。我想知道我是否可以单独使用threejs来实现这一点。我也应该能够控制其运动的颜色强度和路径。嗨!也许这会有帮助:GitHub-jeromeetienne/三倍体积聚光灯: three.js扩展以提供体积聚光灯13,用于可视化光锥。您可以使用THREE.Curve()设置其路径。控制颜色强度,可能取决于曲线上的位置,也可以使用tween.js或者GSAP用于复杂的动画。创造力取决于您这是您想要的吗?https://threejs.org/e...
three.js使用光线投射动态绘制多边形
我要画多边形three.js具有交点。为此,我使用下面的函数。首先,我使用光线投射器在第一个交点的第一个点添加球体。每次单击后,在交点处创建新球体,并在该交点和上一点之间创建线。现在,我希望在第一次单击时关闭多边形指向或单击该点周围。如何实现此目标。raycaster params是否与网格一起工作以检测鼠标位置周围的网格?function checkIntersectionclick() = raycaster.intersectObjects(addedObject, true);if (interse...