好吧,我有80,000个"盒子"网格物体和简单的纹理我设置了一个视图距离,只绘制了你可以看到的那些为下面的DrawModel函数留下600到1000的问题.问题是我每秒只得到10帧和我的视距很糟糕另外,我已经对我的所有代码进行了内存测试,"mesh.draw()"每秒关闭30帧.没有别的东西接近那么多.有帮助吗?
private void DrawModel(MeshHolder tmpMH)
{
Model tmpDrawModel = (Model)_Meshs[tmpMH.MeshFileName];
Matrix[] transforms = new Matrix[tmpDrawModel.Bones.Count];
tmpDrawModel.CopyAbsoluteBoneTransformsTo(transforms);
foreach (ModelMesh mesh in tmpDrawModel.Meshes)
{
foreach (BasicEffect effect in mesh.Effects)
{
effect.LightingEnabled = false;
effect.TextureEnabled = true;
effect.Texture = (Texture2D)_Textures[tmpMH.GetTexture(Count)];
effect.View = _MainCam.View;
effect.Projection = _projection;
effect.World =
transforms[mesh.ParentBone.Index] *
Matrix.CreateFromYawPitchRoll(tmpMH.Rotation.Y, tmpMH.Rotation.X, tmpMH.Rotation.Z) *
Matrix.CreateScale(tmpMH.Scale) *
Matrix.CreateTranslation(tmpMH.Position);
}
mesh.Draw();
}
}
Run Code Online (Sandbox Code Playgroud) 我正在尝试用顶点编写一个obj文件.我在我的代码中计算顶点法线并写入此文件.当我尝试在Meshlab中渲染这个文件时,它正确地读取顶点,但是当我转到'Render-> Show vertex normals'时,它没有显示我计算的法线.相反,MeshLab会计算自己的法线并显示它们.
我不确定如何可视化我计算/写入文件的法线.我想稍后根据我的计算法线应用Meshlab着色器.
为了测试这个,我创建了一个测试obj文件 -
vn 0.517350 0.517350 0.517350
v 0.500000 0.500000 0.500000
vn -0.333333 0.666667 0.666667
v -0.500000 0.500000 0.500000
vn 0.666667 -0.333333 0.666667
v 0.500000 -0.500000 0.500000
vn -0.666667 -0.666667 0.333333
v -0.500000 -0.500000 0.500000
f 1//1 2//2 3//3
f 4//4 3//3 2//2
Run Code Online (Sandbox Code Playgroud)
这只是一个方格.现在,如果我更改此文件中的正常值,当我选择"渲染 - >显示顶点法线"时,它仍会显示自己的顶点法线.我如何拥有自己的法线并应用适用于我的计算法线的着色器?请帮忙.
谢谢!!
给定一个三维三角形网格,我怎样才能知道它是凸面还是凹面?有算法检查吗?如果是这样,定义公差范围以忽略小凹陷将是有用的.

我想将网格物体切成至少五个部分.我做了一些研究,这里的一些人在切片时克隆了对象,只是从一个切片中实例化了两个对象?
我是Unity和C#的新手.所以任何关于从哪里开始或者我可以阅读以学习如何切割网格的初学者教程都会很好.我应该研究哪些功能/方法?切割网格背后的方法是什么?
根据我的理解,我还没有看到任何实际削减三角形网格的教程或资产?如果有,怎么办?它背后的逻辑是什么?我想我需要帮助理解它背后的逻辑以及如何开始或我应该研究什么?
我的意思是实时剪切网格.
编辑:
尝试理解并玩弄代码:
我使用了假切片机3.0(http://unitycoder.com/blog/2011/08/09/fake-mesh-slicer-v3-0/)并包含在样本中,它们有一个切片机可以使用的胶囊.
如果我添加了具有刚体属性和碰撞器属性的立方体或另一个胶囊,则切片器(也称为平面)仅克隆对象并且不会将其切掉.这是为什么?如何操作上面的代码来处理各种对象?
我收到此控制台错误,我不知道这意味着什么:
UnasssignedReferenceException: The variable cutplane of 'Slice_mesh3_js' has not been assigned. You probably need to assign the cutplane variable of the Slice_mesh3_js script in the inspector.
Run Code Online (Sandbox Code Playgroud) 有没有使用网状网络将ios设备连接到Android设备的框架?
像firechat这样的应用程序可以让用户只使用bluethoot和wifi(通过苹果的多重连接框架)互相交谈.但有没有办法使用某种多重连接将ios设备连接到Android设备?
我正在尝试构建像firechat这样的应用程序,以供大学里的一些朋友使用,但它需要将ios设备连接到Android设备.如果只有ios设备,多重连接框架就可以了,但在这种情况下,我不知道要使用哪个框架来连接所有这些设备
我想从GeoTools镶嵌国家形状,在地球表面上以3D形式显示.GeoTools使用内部功能丰富的JTS拓扑套件.
是否包含镶嵌某些形状的实用程序?我看到有三角测量包,但无法弄清楚,如何将其用于带孔的形状.
另外,我不仅可以像这里一样连接现有的顶点

它应该填充内部有多个顶点的形状.
UPDATE
我发现,JTS包含ConformingDelaunayTriangulationBuilder允许以某种方式制作希望镶嵌的类,但它的工作很糟糕.首先,它只允许约束,这意味着需要额外的代码来从凹陷区域中删除三角形.并且它还试图保留细分的Delaunay性质,这导致创建许多其他部分.
最后,它导致ConstraintEnforcementException复杂的形状像国家和无法使用.
我还发现了"三角形"包,用C语言编写并实现了Chew的第二种算法,效果很好

现在我想知道,它是移植到Java还是包含它?
我想用2个网格创建一个Pine,1个用于树干,另一个用于灌木丛,这就是我所做的:
var pine_geometry = new THREE.Geometry();
var pine_texture_1 = THREE.ImageUtils.loadTexture('./res/textures/4.jpg');
var pine_geometry_1 = new THREE.CylinderGeometry(25, 25, 50, 6);
var pine_material_1 = new THREE.MeshBasicMaterial({
map : pine_texture_1
});
var pine_1 = new THREE.Mesh(pine_geometry_1);
pine_1.position.x = x;
pine_1.position.y = y + 25;
pine_1.position.z = z;
pine_1.updateMatrix();
pine_geometry.merge(pine_1.geometry, pine_1.matrix);
var pine_texture_2 = THREE.ImageUtils.loadTexture('./res/textures/5.jpg');
var pine_geometry_2 = new THREE.CylinderGeometry(0, 70, 250, 8);
var pine_material_2 = new THREE.MeshBasicMaterial({
map : pine_texture_2
});
var pine_2 = new THREE.Mesh(pine_geometry_2);
pine_2.position.x = x;
pine_2.position.y = y + 175; …Run Code Online (Sandbox Code Playgroud) 我目前有一个“CreateMesh”脚本,可以将其作为具有网格渲染器和网格过滤器的对象的组件,并且在给定“MeshType”变量的情况下,使用网格尺寸中的多边形碰撞器创建二维网格设置为“tri”或“box”(分别用于三角形和矩形网格。)我还想添加创建圆形网格的能力,但是从一些研究中我意识到这并不像我第一次那么简单想法。但是,我还没有找到任何有帮助的东西。
这是我的长方体和三角形网格的代码:
public float width = 5f;
public float height = 5f;
public string meshType;
public PolygonCollider2D polyCollider;
void Start()
{
polyCollider = GetComponent<PolygonCollider2D>();
}
// Update is called once per frame
void Update () {
if (meshType == "tri")
{
TriangleMesh(width, height);
}
if (meshType == "box")
{
BoxMesh(width, height);
}
}
void TriangleMesh(float width, float height)
{
MeshFilter mf = GetComponent<MeshFilter>();
Mesh mesh = new Mesh();
mf.mesh = mesh;
//Verticies
Vector3[] verticies = new Vector3[3]
{
new Vector3(0,0,0), …Run Code Online (Sandbox Code Playgroud) 有没有一种简单的方法来改变PIXI JS曲线文本中的字体大小?文本是通过创建的new PIXI.mesh.Rope(pixiText.texture, points).使用调整大小按钮(查看下面的图像),您可以更改对象的大小.我可以使用,scale但它会降低质量.
在基本文本对象中可以更改字体大小text.style.fontSize = newFontSize.
我有一个包含 100 万个点的 3-D 点云文件,我需要将其转换为 trimesh 中的网格文件。这里的最终目标是获取一个点云并确定该点云是凸面还是凹面(trimesh 允许我在将云转换为网格后这样做)。我愿意接受其他图书馆来解决这个问题。
我已经尝试使用 scipy 进行 Delaunay 三角剖分,但似乎无法将我的点云转换为正确的格式,以便trimesh 可以读取它。
import open3d as o3d
import numpy as np
import trimesh
from scipy.spatial import Delaunay
pointcloud = o3d.io.read_triangle_mesh("pointcloud.ply")
points = np.array(pointcloud.points)
triangle_mesh = Delaunay(points)
# How do i include triangle_mesh from Delaunay triangulation into processing the mesh file?
mesh = trimesh.load("pointcloud.ply")
print(trimesh.convex.is_convex(mesh))
Run Code Online (Sandbox Code Playgroud)
错误
geometry::TriangleMesh appears to be a geometry::PointCloud (only contains vertices, but no triangles).
geometry::TriangleMesh with 1390073 points and 0 triangles.
expected = (faces.shape[0], faces.shape[1] * …Run Code Online (Sandbox Code Playgroud) mesh ×10
c# ×3
javascript ×2
3d ×1
algorithm ×1
android ×1
c++ ×1
convex ×1
delaunay ×1
draw ×1
frame-rate ×1
frameworks ×1
geotools ×1
graphics ×1
ios ×1
java ×1
jts ×1
material ×1
merge ×1
meshlab ×1
non-convex ×1
normals ×1
pixi.js ×1
point-clouds ×1
python ×1
tessellation ×1
text ×1
three.js ×1
trimesh ×1
unityscript ×1
xna ×1