Jump to content

Josh

Staff
  • Posts

    23,127
  • Joined

  • Last visited

Posts posted by Josh

    • Replaced mouse tool menu items and hotkeys with a single menu item called "Next Tool" that can be activated with Shift + Tab.
    • Vertex mouse tool will now make the selected vertex or edge snap to the nearest grid point.
    • Terrain creation properties changed a little bit.
    • Default terrain scale now set to 1.28, for easy brush alignment.
    • Like 2
    • Fixed vertex and face tools, which could get weird results that did not align to the current mouse position.
    • Vertex and mouse tools now display the up/down mouse cursor when Alt key is pressed.

    For now, I will keep the trenchbroom-style controls for these two tools.

  1. Some code I used to resize a cubemap. I think the mipmaps might not be correct, but that's okay: Pasting here in case I need it again

        auto plug = LoadPlugin("Plugins/ISPCTexComp.dll");
    
        auto tex = LoadTexture(GetPath(PATH_DESKTOP) + "/diffuse.dds", LOAD_MIPCHAIN);
        auto mipchain = tex->mipchain;
        std::vector<shared_ptr<Pixmap> > chain2;
        for (auto p : mipchain)
        {
            
            {
                p = p->Convert(TEXTURE_RGBA16);
                p = p->Resize(256, 256);
                p = p->Convert(TEXTURE_BC6H);
                chain2.push_back(p);
            }
        }
        SaveTexture(GetPath(PATH_DESKTOP) + "/thumbnail_diffuse.dds", TEXTURE_CUBE, chain2, 6);
        return 0;

     

  2. Here is some code that uses it, but I just can't seem to get it to work right. I don't think there is an error in my code.

    I had to fix this file for C++17. Maybe that is causing it? I do not understand these functions:
    misc.h

    	int VertMap(const std::vector<int>& collapse_map, int a, int mx) {
    		if (mx <= 0) return 0;
    		while (a >= mx)
    		{
    			a = collapse_map[a];
    		}
    		return a;
    	}
    					std::vector<linalg::aliases::float3> vert;
    					std::vector<tridata> tri;
    					std::vector<int> collapse_map;
    					std::vector<int> permutation;
    					tridata t;
    
    					for (const auto& v : mesh->vertices)
    					{
    						vert.push_back(linalg::aliases::float3(v.position.x, v.position.y, v.position.z));
    					}
    
    					for (int n = 0; n < mesh->CountPrimitives(); ++n)
    					{
    						t.v[0] = mesh->GetPrimitiveVertex(n, 0);
    						t.v[1] = mesh->GetPrimitiveVertex(n, 1);
    						t.v[2] = mesh->GetPrimitiveVertex(n, 2);
    						tri.push_back(t);
    					}
    
    					//-----------------------------
    					// Reduce the mesh
    					//-----------------------------
    
    					ProgressiveMesh(vert, tri, collapse_map, permutation);
    
    					//-----------------------------
    					// PermuteVertices
    					//-----------------------------
    
    					// rearrange the vertex Array 
    					std::vector<float3> temp_Array;
    					unsigned int i;
    					assert(permutation.size() == vert.size());
    					for (i = 0; i < vert.size(); i++) {
    						temp_Array.push_back(vert[i]);
    					}
    					for (i = 0; i < vert.size(); i++) {
    						vert[permutation[i]] = temp_Array[i];
    					}
    					// update the changes in the entries in the triangle Array
    					for (i = 0; i < tri.size(); i++) {
    						for (int j = 0; j < 3; j++) {
    							tri[i].v[j] = permutation[tri[i].v[j]];
    						}
    					}
    
    					//-----------------------------
    					// Build new mesh
    					//-----------------------------
    
    					model->Clear();
    					mesh->extra = nullptr;
    					mesh = model->AddMesh();
    
    					std::vector<int> newvertex(vert.size());
    					std::fill(newvertex.begin(), newvertex.end(), -1);
    
    					//Add triangles
    					int a, b, c, p0, p1, p2;
    					int render_num = vert.size() * 0.5;
    					for (unsigned int i = 0; i < tri.size(); i++)
    					{
    						p0 = VertMap(collapse_map, tri[i].v[0], render_num);
    						p1 = VertMap(collapse_map, tri[i].v[1], render_num);
    						p2 = VertMap(collapse_map, tri[i].v[2], render_num);
    						if (p0 == p1 or p1 == p2 or p2 == p0) continue;
    						a = newvertex[p0];
    						if (a == -1)
    						{
    							a = mesh->AddVertex(vert[p0].x, vert[p0].y, vert[p0].z);
    							newvertex[p0] = a;
    						}
    						b = newvertex[p1];
    						if (b == -1)
    						{
    							b = mesh->AddVertex(vert[p1].x, vert[p1].y, vert[p1].z);
    							newvertex[p1] = b;
    						}
    						c = newvertex[p2];
    						if (c == -1)
    						{
    							c = mesh->AddVertex(vert[p2].x, vert[p2].y, vert[p2].z);
    							newvertex[p2] = c;
    						}
    						//int a = mesh->AddVertex(vert[p0].x, vert[p0].y, vert[p0].z);
    						//int b = mesh->AddVertex(vert[p1].x, vert[p1].y, vert[p1].z);
    						//int c = mesh->AddVertex(vert[p2].x, vert[p2].y, vert[p2].z);
    						mesh->AddPrimitive(a, b, c);
    					}
    
    					mesh->UpdateBounds();
    					model->UpdateBounds();

     

  3. "No source file found" just means the original image file the file was converted from does not exist, or might not be included.

    Leadwerks does not save image files, it just converts images into the custom texture format.

    Ultra can actually load Leadwerks .tex files and save in different image formats.

  4. 0.9.6

    • In this build the terrain creation works more like Leadwerks, where it is created by first selecting the terrain tool. You don't have to worry about selecting the terrain to edit it, it just works. Try it and let me know what you think. The way it is stored in the map file has not changed.
    • LOD for orthographic cameras is fixed.

    Untitled.png.466b3da1eb85c42c6b5ce3aa2463b83b.png

×
×
  • Create New...