# Partial model loss in array display when the number of triangles is huge.

**URL:** https://discourse.vtk.org/t/partial-model-loss-in-array-display-when-the-number-of-triangles-is-huge/16015
**Category:** Development
**Tags:** bug
**Created:** [September 5, 2025, 7:05am UTC](https://discourse.vtk.org/t/partial-model-loss-in-array-display-when-the-number-of-triangles-is-huge/16015 "2025-09-05T07:05:44Z")
**Posts on this page:** 1
**Page:** 1

<div class="post-metadata">

### Author: ![DDS](https://discourse.vtk.org/letter_avatar_proxy/v4/letter/d/ee7513/32.png) [@DDS](https://discourse.vtk.org/u/DDS)
#### Post date: [September 5, 2025, 7:05am UTC](https://discourse.vtk.org/t/partial-model-loss-in-array-display-when-the-number-of-triangles-is-huge/16015/1 "2025-09-05T07:05:44Z")

</div>

I have a STL file which has 983236 triangles. I read it and use vtkAppendPolyData and vtkTransformPolyDataFilter to make a new data for the matrix display. Whe I set nx=ny=nz=7, it was displayed correctly. However when I set nz=8, now it has 385428512 triangles but only part of it was displayed. I try to use a plane to cut it and found the cross-section is correct. It means vtkAppendPolyData has generated all triangles but this model was not displayed correctly.

The computer has enough memory and GPU resource. I got no memory leak and the program exits normally.

The VTK version is 9.5.1 x64. I compiled and used VTK with VS2019. VTK 9.4 also has this problem.

What below is the codes. Thanks for your kindly help. It is a strange problem.

int main(int argc, char\* argv)  
{  
vtkOutputWindow::SetGlobalWarningDisplay(true);

```auto
vtkSmartPointer<vtkSTLReader> stlReader = vtkSmartPointer<vtkSTLReader>::New();
stlReader->SetFileName("sim.stl");
stlReader->Update();

if (!stlReader->GetOutput()) {
    std::cerr << "Error: Failed to read STL file!" << std::endl;
    return EXIT_FAILURE;
}

std::cout << stlReader->GetOutput()->GetNumberOfPolys() << std::endl;

vtkSmartPointer<vtkAppendPolyData> appendFilter = vtkSmartPointer<vtkAppendPolyData>::New();

int nx = 7, ny = 7, nz = 8;
double dx = 0.1, dy = 0.1, dz = 0.1;

for (int k = 0; k < nz; k++)
{
    for (int j = 0; j < ny; j++)
    {
        for (int i = 0; i < nx; i++)
        {
            vtkSmartPointer<vtkTransform> transform = vtkSmartPointer<vtkTransform>::New();
            transform->Translate(i * dx, j * dy, k * dz);

            vtkSmartPointer<vtkTransformPolyDataFilter> transformFilter = vtkSmartPointer<vtkTransformPolyDataFilter>::New();
            transformFilter->SetInputData(stlReader->GetOutput());
            transformFilter->SetTransform(transform);
            transformFilter->Update();

            appendFilter->AddInputData(transformFilter->GetOutput());
        }
    }
}

appendFilter->Update();

std::cout << appendFilter->GetOutput()->GetNumberOfPolys() << std::endl;

vtkSmartPointer<vtkPolyDataMapper> mapper = vtkSmartPointer<vtkPolyDataMapper>::New();
mapper->SetInputData(appendFilter->GetOutput());

vtkSmartPointer<vtkActor> actor = vtkSmartPointer<vtkActor>::New();
actor->SetMapper(mapper);
actor->GetProperty()->EdgeVisibilityOff();
actor->GetProperty()->SetOpacity(0.8);
actor->GetProperty()->BackfaceCullingOn();

vtkSmartPointer<vtkRenderer> renderer = vtkSmartPointer<vtkRenderer>::New();
vtkSmartPointer<vtkRenderWindow> renderWindow = vtkSmartPointer<vtkRenderWindow>::New();
renderWindow->AddRenderer(renderer);
renderWindow->SetSize(1920, 1080);

vtkSmartPointer<vtkRenderWindowInteractor> renderWindowInteractor = vtkSmartPointer<vtkRenderWindowInteractor>::New();
renderWindowInteractor->SetRenderWindow(renderWindow);

renderer->AddActor(actor);
renderer->SetBackground(0.1, 0.2, 0.3);
renderer->ResetCamera();

renderWindow->Render();
renderWindowInteractor->Start();

return EXIT_SUCCESS;

```

}

 ![1](https://discourse.vtk.org/uploads/default/original/2X/f/fdeab942b96cfaa024c10cd974fd54e900373c2a.jpeg)

 ![2](https://discourse.vtk.org/uploads/default/original/2X/2/225ea1862ad714af3efd827a3a9036cdf3e13b32.png)
