### Godot version

4.1.3 stable.arch_linux

### System information

Artix Linux Godot v4.1.3 stable.arch_linux

### Issue description

![2023-11-14T16:29:28,788232528+01:00](https://github.com/godotengine/godot/assets/92468390/a79027e2-1539-4ca9-9369-978c32dea26d)
Both "Target Surface:" and "Source Mesh:" accept non Node3D nodes which doesn't really make any sense as they need 3D geometry to function.

### Steps to reproduce

1. Add a MultiMeshInstance3D
2. Add a Node that doesn't inherit Node3D
3. Open the "Populate Surface" menu and click the right button of either "Target Surface:" or "Source Mesh:"

### Minimal reproduction project

N/A
return;
	}
	Node *ss_node = node->get_node(surface_source->get_text());
	if (!ss_node) {
		err_dialog->set_text(TTR("Surface source is invalid (invalid path)."));
		err_dialog->popup_centered();
		return;
	}
	MeshInstance3D *ss_instance = Object::cast_to<MeshInstance3D>(ss_node);
	if (!ss_instance || !ss_instance->get_mesh().is_valid()) {
		err_dialog->set_text(TTR("Surface source is invalid (no geometry)."));
		err_dialog->popup_centered();
		return;
	}
	Transform3D geom_xform = node->get_global_transform().affine_inverse() * ss_instance->get_global_transform();
	Vector<Face3> geometry = ss_instance->get_mesh()->get_faces();
	if (geometry.size() == 0) {
		err_dialog->set_text(TTR("Surface source is invalid (no faces)."));
		err_dialog->popup_centered();
		return;
	}
	
	int gc = geometry.size();
	Face3 *w = geometry.ptrw();
	for (int i = 0; i < gc; i++) {
		for (int j = 0; j < 3; j++) {
			w[i].vertex[j] = geom_xform.xform(w[i].vertex[j]);
		}
	}
	Vector<Face3> faces = geometry;