- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我花了几个小时试图弄清楚为什么我看不到立方体内的文本,而且我不明白为什么它不起作用。
有两个网格,其中一个在另一个网格内部,但不可见。
当我注释将立方体网格添加到我的组中的行时,会出现文本(第 34 行)。如果我从其 Material 中删除“transparent: true”,我可以看到文本,但会出现背景(第 52 行)。
文本作为 Canvas 纹理添加,这是我发现动态添加二维文本的最简单方法。
我只想在我的立方体中添加一些白色文本,而没有任何背景颜色。
我看到了这个问题,但看起来它与我的问题无关:THREE.JS: Seeing geometry when inside mesh
var renderer, scene, camera, cubeGroup;
var rotationX = 0;
var rotationY = 0;
var percentX, percentY;
var container = document.getElementById('container');
init();
animate();
function init(){
renderer = new THREE.WebGLRenderer({alpha: true});
renderer.setSize(window.innerWidth, window.innerHeight);
renderer.setClearColor( 0x000000, 1);
document.getElementById('container').appendChild(renderer.domElement);
scene = new THREE.Scene();
camera = new THREE.PerspectiveCamera(50, window.innerWidth / window.innerHeight, 1, 10000);
camera.position.set(0, 0, 1000);
scene.add(camera);
// group
cubeGroup = new THREE.Group();
// cube
var geometry = new THREE.BoxGeometry(200, 200, 200);
var material = new THREE.MeshPhongMaterial({
color: 0x11111f,
side: THREE.DoubleSide,
opacity: .5,
transparent: true
});
var mesh = new THREE.Mesh(geometry, material);
cubeGroup.add(mesh); // Comment this and the text appears with transparency
var ambientLight = new THREE.AmbientLight(0x999999, 0.8);
scene.add(ambientLight);
// text
var bitmap = document.createElement('canvas');
var g = bitmap.getContext('2d');
bitmap.width = 256;
bitmap.height = 256;
g.font = '80px Arial';
g.fillStyle = 'white';
g.fillText('text', 20, 80);
var geometry = new THREE.PlaneGeometry(180, 180);
var texture = new THREE.CanvasTexture(bitmap);
var material = new THREE.MeshStandardMaterial({
map: texture,
transparent: true // Comment this and the text appears - but with background
});
var mesh2 = new THREE.Mesh(geometry, material);
cubeGroup.add(mesh2);
// add group to scene
scene.add(cubeGroup);
window.addEventListener('resize', onWindowResize, false);
}
function onWindowResize() {
windowHalfX = window.innerWidth / 2;
windowHalfY = window.innerHeight / 2;
camera.aspect = window.innerWidth / window.innerHeight;
camera.updateProjectionMatrix();
renderer.setSize(window.innerWidth, window.innerHeight);
}
function animate(now){
requestAnimationFrame(animate);
cubeGroup.rotation.y += (rotationX - cubeGroup.rotation.y) * 0.05;
cubeGroup.rotation.x += (rotationY - cubeGroup.rotation.x) * 0.05;
renderer.render(scene, camera);
}
function findViewCoords(mouseEvent)
{
var xpos;
var ypos;
var w = window.innerWidth;
var h = window.innerHeight;
var centerX = w/2;
var centerY = h/2;
if (mouseEvent)
{
xpos = mouseEvent.pageX - document.body.scrollLeft;
ypos = mouseEvent.pageY - document.body.scrollTop;
}
else
{
xpos = window.event.x + 2;
ypos = window.event.y + 2;
}
var diffX = xpos - centerX;
var diffY = ypos - centerY;
percentX = diffX / centerX;
percentY = diffY / centerY;
rotationX = percentX/2;
rotationY = percentY/2;
}
container.addEventListener("mousemove", findViewCoords);
body {
margin: 0;
padding: 0;
overflow: hidden;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/three.js/84/three.js"></script>
<div id="container"></div>
最佳答案
发生这种情况的原因是 Three.js 中的渲染分两个阶段进行。
首先渲染固体的东西..然后是透明的东西。
透明物体按照距相机的距离排序。
因此,通过设置 .transparent = true;您要让文本在第二遍期间渲染,从而渲染在其他几何体之上。
查看不屈不挠的 West Langley 的回答:
关于javascript - 三JS : Mesh becomes invisible when inside another mesh,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50690473/
我正在尝试安装 libmesh用于并行计算(固体力学问题)。 在安装过程中,我可以看到配置摘要,其中指出我在计算机上安装了几乎所有依赖项,但是一些重要功能,例如infinite elements和 n
我对 OGRE 图形引擎比较陌生,所以我的问题可能看起来太明显了,但是搜索相关信息没有成功。 鉴于: 我有一个 OGRE 应用程序,其中包含由一些网格、灯光、相机和纹理创建的场景。这很简单,我想。这一
给定一个网格(如左侧的立方体对象)和另一个自定义的类似球体的网格(右侧;如果更容易,它可以是另一种形状),Unity 和 C# 中的一个如何在运行时软包裹第二个网格围绕第一?谢谢! 最佳答案 以下方法
我有一个父节点的 webroot 路径,想返回这个节点的子节点。 使用 https://demo.getmesh.io/api/v1/demo/webroot/images/例如只产生节点本身。 最佳
我花了几个小时试图弄清楚为什么我看不到立方体内的文本,而且我不明白为什么它不起作用。 有两个网格,其中一个在另一个网格内部,但不可见。 当我注释将立方体网格添加到我的组中的行时,会出现文本(第 34
我正在将 GLTF 模型加载到 threejs 中。对象上使用的所有 Material (还有很多)都使用网格基础 Material ,我们希望它们是可以受光影响的 Material 。有没有办法将所
这是我第一次在这里发帖。我正在使用 python 制作房屋的 3D 模型,我想使用 FreeCAD 可视化输出。我找到了写入 dxf 格式的 ezdxf 接口(interface)(https://p
我想从点云生成视觉上吸引人的表面重建。 我正在使用点云库。我尝试使用泊松重建方法创建网格,但后来发现它提供了水密重建。 例如:在我的情况下,我有一个房间的点云 使用 http://justpaste.
我在 ogre3d 中使用了bulletphysics。为了让它们共享相同的顶点数据,我使用了这个: http://www.ogre3d.org/tikiwiki/BulletMeshStrider
我有一个从给定网格(形状)获取主曲率的问题。 我正在尝试使用 Matlab 文件交换中的“patchcurvature”方法。然而,该方法总是给出正曲率。我认为可能是该方法将网格视为单独的补丁,并计算
我正在寻找一种算法,该算法可以接收3d表面网格(即由3d三角形组成的一些流形的离散化)并在网格体积内生成四面体。 即,我想要与这个2d问题等效的3d:给定闭合曲线,对它的内部进行三角剖分。 很抱歉,如
我有一个包含彩色点云的 .ply 文件: 我需要将其转换为纹理网格。我可以创建一个空白网格: 过滤器 -> 点集 -> 表面重建:泊松 但结果是一个白色的网格 似乎所有关于颜色的信息都丢失了。有什么建
我有一个三角形网格类,其中包含一个节点列表(在我的情况下为 2d,但这无关紧要)和一个面列表。每个面都是一个三角形,它只包含节点数组的索引。网格来自 Delaunay 算法,因此非常干净。 对于网格中
我有一组点需要构建为一组三角形面以形成实体网格。我看过德劳内三角测量,但没有一个有意义。关于从哪里开始有什么建议吗?我不处理复杂的形状,它们最多包含 200 个顶点。 注意:这些点位于 x,y,z 空
我有一组点需要构建为一组三角形面以形成实体网格。我看过 Delaunay Triangulation,但没有任何意义。关于从哪里开始的任何建议?我不处理复杂的形状,它们最多包含 200 个顶点。 注意
最近我得到一个三角形网格,但是网格上三角形的法线方向是不一致。是否有任何算法可以使法线一致?从一本书中,它说“通常传播法线的方向沿着相邻补丁之间的最小生成树预处理步骤或隐含地遍历输入 [Hoppe等。
我正在用 Java3D 创建莫比乌斯带。我有一条缝,我似乎无法摆脱它!我假设它与法线有关,而且连接边之间的角度差在技术上是 180 度。谁能帮我去掉这个接缝? 这是我的代码: public c
比方说 data是一个大小为 129 * 129 的矩阵. 通过使用 mesh(data, 'FaceColor', 'none', 'EdgeColor', 'black') 我们得到类似的东西 我
网格和几何体之间有什么区别?它们不是一样的吗?即形成三角形的顶点的集合? 最佳答案 点是几何体,但它不是网格。曲线是几何体,但它不是网格。等值面是几何体,但它不是……现在您明白了。 网格是几何体,而不
我认为 OpenMesh 将支持对面边缘顶点的随机访问。我能找到的只是迭代器和循环器: for( auto v : mesh->vertices() ) mesh->point(v).data
我是一名优秀的程序员,十分优秀!